@orquentra/codebuddy 2.6.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CLAUDE_CODEX.md +6 -4
  2. package/WORKFLOW.md +5 -5
  3. package/dist/{chunk-U4HAJLIB.js → chunk-3QGW53GD.js} +16 -3
  4. package/dist/chunk-3QGW53GD.js.map +1 -0
  5. package/dist/{chunk-L5AYZC3F.js → chunk-5EDGAZQN.js} +438 -68
  6. package/dist/chunk-5EDGAZQN.js.map +1 -0
  7. package/dist/chunk-5UH3BEQR.js +32 -0
  8. package/dist/chunk-5UH3BEQR.js.map +1 -0
  9. package/dist/{chunk-JFDRBPYF.js → chunk-6JCKMIQY.js} +2 -2
  10. package/dist/{chunk-UN57FKQX.js → chunk-AK2UAE32.js} +152 -862
  11. package/dist/chunk-AK2UAE32.js.map +1 -0
  12. package/dist/{chunk-GDJH7XJC.js → chunk-AL6VBTNA.js} +77 -3
  13. package/dist/chunk-AL6VBTNA.js.map +1 -0
  14. package/dist/{chunk-WHZSVY2L.js → chunk-AQHPEJR6.js} +94 -23
  15. package/dist/chunk-AQHPEJR6.js.map +1 -0
  16. package/dist/{chunk-PCE4STAY.js → chunk-BQM7FJ7D.js} +6 -6
  17. package/dist/chunk-BQM7FJ7D.js.map +1 -0
  18. package/dist/{chunk-XBJQKCLU.js → chunk-CAEPHLHC.js} +13 -9
  19. package/dist/chunk-CAEPHLHC.js.map +1 -0
  20. package/dist/chunk-CG5B3LYG.js +66 -0
  21. package/dist/chunk-CG5B3LYG.js.map +1 -0
  22. package/dist/chunk-CSRD5OQA.js +79 -0
  23. package/dist/chunk-CSRD5OQA.js.map +1 -0
  24. package/dist/{chunk-IHQM2ZDV.js → chunk-DFV2SK6C.js} +1 -1
  25. package/dist/{chunk-IHQM2ZDV.js.map → chunk-DFV2SK6C.js.map} +1 -1
  26. package/dist/chunk-EEUFU7KV.js +1634 -0
  27. package/dist/chunk-EEUFU7KV.js.map +1 -0
  28. package/dist/{chunk-UFZD3JAA.js → chunk-ESZXCZIN.js} +3 -3
  29. package/dist/{chunk-PYLH4MH5.js → chunk-FJOTP632.js} +1 -1
  30. package/dist/{chunk-SYWJG5NA.js → chunk-GKNYMNFM.js} +17 -7
  31. package/dist/{chunk-SYWJG5NA.js.map → chunk-GKNYMNFM.js.map} +1 -1
  32. package/dist/{chunk-JPHJBCZB.js → chunk-HPOR6YXA.js} +3 -2
  33. package/dist/chunk-HPOR6YXA.js.map +1 -0
  34. package/dist/chunk-JUAFCLRB.js +1014 -0
  35. package/dist/chunk-JUAFCLRB.js.map +1 -0
  36. package/dist/{chunk-776EQXDV.js → chunk-KNR2P2UY.js} +110 -83
  37. package/dist/chunk-KNR2P2UY.js.map +1 -0
  38. package/dist/{chunk-N34XHWBA.js → chunk-LCSBL5TT.js} +24 -11
  39. package/dist/chunk-LCSBL5TT.js.map +1 -0
  40. package/dist/{chunk-QDBDYCM2.js → chunk-MSUAVR3R.js} +76 -11
  41. package/dist/chunk-MSUAVR3R.js.map +1 -0
  42. package/dist/{chunk-6MKEIDX5.js → chunk-SFMIMLXR.js} +2 -2
  43. package/dist/chunk-TGFTKWOR.js +16 -0
  44. package/dist/chunk-TGFTKWOR.js.map +1 -0
  45. package/dist/chunk-TUR6YKEE.js +55 -0
  46. package/dist/chunk-TUR6YKEE.js.map +1 -0
  47. package/dist/chunk-Y7D7PUBE.js +321 -0
  48. package/dist/chunk-Y7D7PUBE.js.map +1 -0
  49. package/dist/{chunk-VAKBJV26.js → chunk-YJIA2MFL.js} +918 -2238
  50. package/dist/chunk-YJIA2MFL.js.map +1 -0
  51. package/dist/cli/index.js +14 -3
  52. package/dist/cli/index.js.map +1 -1
  53. package/dist/{cloud-7WM3YLI4.js → cloud-LXZUR3U2.js} +3 -3
  54. package/dist/{codebuddy-DM-i0Fu5.d.ts → codebuddy-DO7ZhoWn.d.ts} +37 -3
  55. package/dist/config-GEZFLXK6.js +12 -0
  56. package/dist/docker-autostart-KDME7TVC.js +12 -0
  57. package/dist/index.d.ts +48 -3
  58. package/dist/index.js +32 -25
  59. package/dist/langgraph/index.d.ts +1 -1
  60. package/dist/lean-command-CWJAVQ5G.js +18 -0
  61. package/dist/local-ST4WMRCG.js +17 -0
  62. package/dist/{main-HFHLGID4.js → main-AHNGHC4L.js} +327 -329
  63. package/dist/main-AHNGHC4L.js.map +1 -0
  64. package/dist/{memory-4RGVLPKG.js → memory-TGHVTBME.js} +9 -8
  65. package/dist/memory-TGHVTBME.js.map +1 -0
  66. package/dist/operations-7BTAAUHF.js +26 -0
  67. package/dist/postgres-docker-QQZQ2ABK.js +16 -0
  68. package/dist/pretool-command-3SXQSMAO.js +13 -0
  69. package/dist/{rerank-3P3C2UHN.js → rerank-IQAEWLQR.js} +6 -5
  70. package/dist/rerank-IQAEWLQR.js.map +1 -0
  71. package/dist/runtime-E7JQZ2BZ.js +46 -0
  72. package/dist/runtime-E7JQZ2BZ.js.map +1 -0
  73. package/dist/stdio-HOV4P3DQ.js +12 -0
  74. package/dist/stdio-HOV4P3DQ.js.map +1 -0
  75. package/dist/summaries-XV3JGGCC.js +20 -0
  76. package/dist/summaries-XV3JGGCC.js.map +1 -0
  77. package/dist/{zvec-MAPSJQSR.js → zvec-KP4KNB7Y.js} +10 -3
  78. package/dist/zvec-KP4KNB7Y.js.map +1 -0
  79. package/package.json +7 -10
  80. package/src/db/migrations/0006_fact_idempotency_key.sql +2 -0
  81. package/src/db/migrations/meta/0006_snapshot.json +1258 -0
  82. package/src/db/migrations/meta/_journal.json +7 -0
  83. package/dist/chunk-776EQXDV.js.map +0 -1
  84. package/dist/chunk-GDJH7XJC.js.map +0 -1
  85. package/dist/chunk-JPHJBCZB.js.map +0 -1
  86. package/dist/chunk-L5AYZC3F.js.map +0 -1
  87. package/dist/chunk-N34XHWBA.js.map +0 -1
  88. package/dist/chunk-PCE4STAY.js.map +0 -1
  89. package/dist/chunk-PQK3GKZH.js +0 -98
  90. package/dist/chunk-PQK3GKZH.js.map +0 -1
  91. package/dist/chunk-QDBDYCM2.js.map +0 -1
  92. package/dist/chunk-U4HAJLIB.js.map +0 -1
  93. package/dist/chunk-UN57FKQX.js.map +0 -1
  94. package/dist/chunk-VAKBJV26.js.map +0 -1
  95. package/dist/chunk-WHZSVY2L.js.map +0 -1
  96. package/dist/chunk-XBJQKCLU.js.map +0 -1
  97. package/dist/config-KFEHLV6W.js +0 -11
  98. package/dist/lean-command-C5YPFKHP.js +0 -15
  99. package/dist/local-OTOY56B4.js +0 -13
  100. package/dist/main-HFHLGID4.js.map +0 -1
  101. package/dist/memory-4RGVLPKG.js.map +0 -1
  102. package/dist/operations-LOBAQRLO.js +0 -24
  103. package/dist/pretool-command-MQQ2UNQM.js +0 -10
  104. package/dist/rerank-3P3C2UHN.js.map +0 -1
  105. package/dist/summaries-ZBV5IN7Y.js +0 -18
  106. /package/dist/{chunk-JFDRBPYF.js.map → chunk-6JCKMIQY.js.map} +0 -0
  107. /package/dist/{chunk-UFZD3JAA.js.map → chunk-ESZXCZIN.js.map} +0 -0
  108. /package/dist/{chunk-PYLH4MH5.js.map → chunk-FJOTP632.js.map} +0 -0
  109. /package/dist/{chunk-6MKEIDX5.js.map → chunk-SFMIMLXR.js.map} +0 -0
  110. /package/dist/{cloud-7WM3YLI4.js.map → cloud-LXZUR3U2.js.map} +0 -0
  111. /package/dist/{config-KFEHLV6W.js.map → config-GEZFLXK6.js.map} +0 -0
  112. /package/dist/{lean-command-C5YPFKHP.js.map → docker-autostart-KDME7TVC.js.map} +0 -0
  113. /package/dist/{local-OTOY56B4.js.map → lean-command-CWJAVQ5G.js.map} +0 -0
  114. /package/dist/{operations-LOBAQRLO.js.map → local-ST4WMRCG.js.map} +0 -0
  115. /package/dist/{pretool-command-MQQ2UNQM.js.map → operations-7BTAAUHF.js.map} +0 -0
  116. /package/dist/{summaries-ZBV5IN7Y.js.map → postgres-docker-QQZQ2ABK.js.map} +0 -0
  117. /package/dist/{zvec-MAPSJQSR.js.map → pretool-command-3SXQSMAO.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/llm/memory.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { MemoryExtractor } from \"../memory-extract/llm.js\";\nimport { redactSensitive } from \"../memory-extract/sensitive.js\";\nimport { type ExtractionInput, memoryCandidateSchema } from \"../memory-extract/types.js\";\nimport { chatJson } from \"./client.js\";\nimport { type EnabledLlmConfig, resolveLlmConfig } from \"./config.js\";\n\n/**\n * Optional BYOK memory extraction through the existing `MemoryExtractor`\n * seam. Output must match `memoryCandidateSchema` and then passes the same\n * gate as deterministic candidates (sensitive scan, confidence, review);\n * any failure falls back to deterministic extraction.\n */\nconst TIMEOUT_MS = 20_000;\nconst schema = z.object({ candidates: z.array(memoryCandidateSchema).max(10) });\n\nconst SYSTEM = [\n \"You turn the summary of one coding turn into durable project memory.\",\n 'Answer with JSON only: {\"candidates\":[{\"class\":\"fact|decision|incident|note|ignored\",\"content\":\"...\",\"subject\":\"...\",\"predicate\":\"...\",\"object\":\"...\",\"confidence\":0.0,\"paths\":[\"...\"],\"severity\":null}]}.',\n \"Keep only what will still be true and useful in a later session: decisions, confirmed bugs and their causes, project facts.\",\n \"Use only paths named in the input. Confidence below 0.7 for anything uncertain. Chatter is class ignored.\",\n \"Never include secrets.\",\n].join(\" \");\n\nexport function createLlmMemoryExtractor(root: string, config: EnabledLlmConfig): MemoryExtractor {\n return {\n async extract(input: ExtractionInput) {\n const result = await chatJson(config, {\n system: SYSTEM,\n user: JSON.stringify({\n summary: redactSensitive(input.summary),\n changedFiles: (input.changedFiles ?? []).map(redactSensitive),\n verification: (input.verification ?? []).map(redactSensitive),\n }),\n schema,\n maxTokens: 800,\n deadlineMs: TIMEOUT_MS,\n purpose: \"background\",\n repositoryRoot: root,\n });\n if (!result.ok) throw new Error(`llm memory extraction: ${result.reason}`);\n return result.value.candidates;\n },\n };\n}\n\n/** Extra `captureAfterTurn` options when the memory feature is on: one attempt, then deterministic. */\nexport async function llmCaptureOptions(\n root: string,\n env: NodeJS.ProcessEnv = process.env,\n): Promise<{ extractor?: MemoryExtractor; retries?: number }> {\n const config = await resolveLlmConfig(root, env);\n if (!config.enabled || !config.features.memory) return {};\n return { extractor: createLlmMemoryExtractor(root, config), retries: 0 };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,SAAS,SAAS;AAalB,IAAM,aAAa;AACnB,IAAM,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,EAAE,IAAI,EAAE,EAAE,CAAC;AAE9E,IAAM,SAAS;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEH,SAAS,yBAAyB,MAAc,QAA2C;AAChG,SAAO;AAAA,IACL,MAAM,QAAQ,OAAwB;AACpC,YAAM,SAAS,MAAM,SAAS,QAAQ;AAAA,QACpC,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,SAAS,gBAAgB,MAAM,OAAO;AAAA,UACtC,eAAe,MAAM,gBAAgB,CAAC,GAAG,IAAI,eAAe;AAAA,UAC5D,eAAe,MAAM,gBAAgB,CAAC,GAAG,IAAI,eAAe;AAAA,QAC9D,CAAC;AAAA,QACD;AAAA,QACA,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,gBAAgB;AAAA,MAClB,CAAC;AACD,UAAI,CAAC,OAAO,GAAI,OAAM,IAAI,MAAM,0BAA0B,OAAO,MAAM,EAAE;AACzE,aAAO,OAAO,MAAM;AAAA,IACtB;AAAA,EACF;AACF;AAGA,eAAsB,kBACpB,MACA,MAAyB,QAAQ,KAC2B;AAC5D,QAAM,SAAS,MAAM,iBAAiB,MAAM,GAAG;AAC/C,MAAI,CAAC,OAAO,WAAW,CAAC,OAAO,SAAS,OAAQ,QAAO,CAAC;AACxD,SAAO,EAAE,WAAW,yBAAyB,MAAM,MAAM,GAAG,SAAS,EAAE;AACzE;","names":[]}
@@ -1,24 +0,0 @@
1
- import {
2
- createRuntime,
3
- decodeFactCursor,
4
- encodeFactCursor,
5
- inspectNamespace,
6
- listFactsPage,
7
- runDoctor
8
- } from "./chunk-UN57FKQX.js";
9
- import "./chunk-GDJH7XJC.js";
10
- import "./chunk-XBJQKCLU.js";
11
- import "./chunk-JFDRBPYF.js";
12
- import "./chunk-U4HAJLIB.js";
13
- import "./chunk-JPHJBCZB.js";
14
- import "./chunk-776EQXDV.js";
15
- import "./chunk-PZ5AY32C.js";
16
- export {
17
- createRuntime,
18
- decodeFactCursor,
19
- encodeFactCursor,
20
- inspectNamespace,
21
- listFactsPage,
22
- runDoctor
23
- };
24
- //# sourceMappingURL=operations-LOBAQRLO.js.map
@@ -1,10 +0,0 @@
1
- import {
2
- runPreToolHookCommand
3
- } from "./chunk-WHZSVY2L.js";
4
- import "./chunk-PYLH4MH5.js";
5
- import "./chunk-PQK3GKZH.js";
6
- import "./chunk-PZ5AY32C.js";
7
- export {
8
- runPreToolHookCommand
9
- };
10
- //# sourceMappingURL=pretool-command-MQQ2UNQM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/llm/rerank.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { z } from \"zod\";\nimport { redactSensitive } from \"../memory-extract/sensitive.js\";\nimport { chatJson, type LlmResult } from \"./client.js\";\nimport type { EnabledLlmConfig } from \"./config.js\";\n\n/**\n * Prompt-time rerank: the model sees the task and up to 15 candidate files\n * (path, one-line summary, a few signatures, never bodies) and picks at most\n * three, or abstains. The caller validates every pick against the candidates,\n * the symbol table and the evidence rules; this module only asks.\n */\nexport const RERANK_PROMPT_VERSION = 1;\nconst LIMITS = { candidates: 15, picks: 3, signatures: 5, reason: 80, maxTokens: 300 } as const;\n\nexport type RerankCandidate = { path: string; summary: string; signatures: string[] };\nexport type RerankPick = { path: string; symbols: string[]; reason: string };\n\nconst schema = z.object({\n files: z\n .array(\n z.object({\n path: z.string(),\n symbols: z.array(z.string()).default([]),\n reason: z.string().default(\"\"),\n }),\n )\n .default([]),\n abstain: z.boolean().default(false),\n});\n\nconst SYSTEM = [\n \"You pick the source files a coding agent must open for a task.\",\n 'Answer with JSON only: {\"files\":[{\"path\":\"...\",\"symbols\":[\"...\"],\"reason\":\"...\"}],\"abstain\":false}.',\n `Choose at most ${LIMITS.picks} files, best first, only from the candidates given;`,\n \"name the functions or classes to look at when you can (from the listed signatures);\",\n \"reason: a few words. If no candidate fits the task, answer with an empty files list and abstain true.\",\n].join(\" \");\n\nexport async function rerankCandidates(\n root: string,\n config: EnabledLlmConfig,\n task: string,\n candidates: RerankCandidate[],\n deadlineMs: number,\n): Promise<LlmResult<{ files: RerankPick[]; abstain: boolean }>> {\n const sent = candidates.slice(0, LIMITS.candidates).map((candidate) => ({\n path: candidate.path,\n summary: redactSensitive(candidate.summary),\n signatures: candidate.signatures.slice(0, LIMITS.signatures).map(redactSensitive),\n }));\n const user = JSON.stringify({ task: redactSensitive(task), candidates: sent });\n const result = await chatJson(config, {\n system: SYSTEM,\n user,\n schema,\n maxTokens: LIMITS.maxTokens,\n deadlineMs,\n purpose: \"prompt\",\n repositoryRoot: root,\n cacheKey: createHash(\"sha256\").update(`rerank:${RERANK_PROMPT_VERSION}:${user}`).digest(\"hex\"),\n });\n if (!result.ok) return result;\n const allowed = new Set(sent.map((candidate) => candidate.path));\n const seen = new Set<string>();\n const files = result.value.files\n .filter((file) => allowed.has(file.path) && !seen.has(file.path) && seen.add(file.path))\n .slice(0, LIMITS.picks)\n .map((file) => ({ ...file, reason: file.reason.slice(0, LIMITS.reason) }));\n return { ...result, value: { files, abstain: result.value.abstain && files.length === 0 } };\n}\n"],"mappings":";;;;;;;;;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,SAAS;AAWX,IAAM,wBAAwB;AACrC,IAAM,SAAS,EAAE,YAAY,IAAI,OAAO,GAAG,YAAY,GAAG,QAAQ,IAAI,WAAW,IAAI;AAKrF,IAAM,SAAS,EAAE,OAAO;AAAA,EACtB,OAAO,EACJ;AAAA,IACC,EAAE,OAAO;AAAA,MACP,MAAM,EAAE,OAAO;AAAA,MACf,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACvC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;AAAA,IAC/B,CAAC;AAAA,EACH,EACC,QAAQ,CAAC,CAAC;AAAA,EACb,SAAS,EAAE,QAAQ,EAAE,QAAQ,KAAK;AACpC,CAAC;AAED,IAAM,SAAS;AAAA,EACb;AAAA,EACA;AAAA,EACA,kBAAkB,OAAO,KAAK;AAAA,EAC9B;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEV,eAAsB,iBACpB,MACA,QACA,MACA,YACA,YAC+D;AAC/D,QAAM,OAAO,WAAW,MAAM,GAAG,OAAO,UAAU,EAAE,IAAI,CAAC,eAAe;AAAA,IACtE,MAAM,UAAU;AAAA,IAChB,SAAS,gBAAgB,UAAU,OAAO;AAAA,IAC1C,YAAY,UAAU,WAAW,MAAM,GAAG,OAAO,UAAU,EAAE,IAAI,eAAe;AAAA,EAClF,EAAE;AACF,QAAM,OAAO,KAAK,UAAU,EAAE,MAAM,gBAAgB,IAAI,GAAG,YAAY,KAAK,CAAC;AAC7E,QAAM,SAAS,MAAM,SAAS,QAAQ;AAAA,IACpC,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,WAAW,OAAO;AAAA,IAClB;AAAA,IACA,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,UAAU,WAAW,QAAQ,EAAE,OAAO,UAAU,qBAAqB,IAAI,IAAI,EAAE,EAAE,OAAO,KAAK;AAAA,EAC/F,CAAC;AACD,MAAI,CAAC,OAAO,GAAI,QAAO;AACvB,QAAM,UAAU,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc,UAAU,IAAI,CAAC;AAC/D,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,QAAQ,OAAO,MAAM,MACxB,OAAO,CAAC,SAAS,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,EACtF,MAAM,GAAG,OAAO,KAAK,EACrB,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,QAAQ,KAAK,OAAO,MAAM,GAAG,OAAO,MAAM,EAAE,EAAE;AAC3E,SAAO,EAAE,GAAG,QAAQ,OAAO,EAAE,OAAO,SAAS,OAAO,MAAM,WAAW,MAAM,WAAW,EAAE,EAAE;AAC5F;","names":[]}
@@ -1,18 +0,0 @@
1
- import {
2
- SUMMARY_PROMPT_VERSION,
3
- loadLlmSummaries,
4
- summarizeRepository
5
- } from "./chunk-PCE4STAY.js";
6
- import "./chunk-UFZD3JAA.js";
7
- import "./chunk-L5AYZC3F.js";
8
- import "./chunk-PQK3GKZH.js";
9
- import "./chunk-GDJH7XJC.js";
10
- import "./chunk-6MKEIDX5.js";
11
- import "./chunk-776EQXDV.js";
12
- import "./chunk-PZ5AY32C.js";
13
- export {
14
- SUMMARY_PROMPT_VERSION,
15
- loadLlmSummaries,
16
- summarizeRepository
17
- };
18
- //# sourceMappingURL=summaries-ZBV5IN7Y.js.map