X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/900ec0e7dad7a913190fcef9016e53495de9bdf8..2ad578a24f252706976cddb41bee6cc969f251cd:/whatsapp_import.go?ds=sidebyside diff --git a/whatsapp_import.go b/whatsapp_import.go index 062d3ca..e1cbd02 100644 --- a/whatsapp_import.go +++ b/whatsapp_import.go @@ -142,7 +142,7 @@ func whatsappImport(ctx context.Context, args []string, out io.Writer) (err erro } client := newModelClient(address, auth, agent.CacheKey(), usagePath) - backup, err := rebuild(ctx, agent, plan.added, client, newCompactor(client, agent.Prompt, config.Compactor), out) + backup, err := rebuild(ctx, agent, plan.added, client, newCompactor(client, agent.Prompt, config.Compactor, agent.Tools()), out) if err != nil { return fmt.Errorf("rebuild imported memory: %w", err) } @@ -211,7 +211,7 @@ func (p WhatsAppImportPlan) Write(out io.Writer) error { "owner: " + owner, fmt.Sprintf("bytes: %d (new batch text)", p.bytes), fmt.Sprintf("messages: %d (merged log)", p.messages), - fmt.Sprintf("estimated calls: %.0f (about 1.3 per message, limit %d)", estimate, buildCallLimit), + fmt.Sprintf("estimated calls: %.0f (about 1.3 per message, limit %d)", estimate, rebuildCallLimit), } _, err = io.WriteString(out, strings.Join(lines, "\n")+"\n") @@ -296,6 +296,7 @@ func whatsappImportNames(ctx context.Context, dir string) (names map[string]What } var state WhatsAppStateFile + err = json.Unmarshal(data, &state) if err != nil { return nil, "", fmt.Errorf("decode pending import names: %w", err) @@ -451,6 +452,7 @@ func whatsappImportPlan(ctx context.Context, paths []string, old []DatedMessage, } var err error + plan.added, err = rebuildMerge(nil, plan.added) if err != nil { return plan, fmt.Errorf("order import batches: %w", err) @@ -485,6 +487,7 @@ func whatsappImportRead(path, owner string, location *time.Location) (chat Whats }() var file *zip.File + for _, entry := range archive.File { if filepath.Base(entry.Name) == "_chat.txt" && !entry.FileInfo().IsDir() { if file != nil { @@ -517,6 +520,7 @@ func whatsappImportRead(path, owner string, location *time.Location) (chat Whats scanner := bufio.NewScanner(io.LimitReader(reader, whatsappImportBytes+1)) scanner.Buffer(make([]byte, 64*1024), buildLineBytes) + for scanner.Scan() { line := strings.ReplaceAll(scanner.Text(), "\u200e", "") match := whatsappImportStart.FindStringSubmatch(line) @@ -530,6 +534,7 @@ func whatsappImportRead(path, owner string, location *time.Location) (chat Whats } messages[len(messages)-1].Text += "\n" + line + continue }