@auvira.ai/sdk 0.5.0 → 0.6.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 (67) hide show
  1. package/README.md +31 -0
  2. package/dist/agent/Agent.d.ts.map +1 -1
  3. package/dist/agent/Agent.js +9 -0
  4. package/dist/agent/Agent.js.map +1 -1
  5. package/dist/agent/attachmentContext.d.ts +9 -0
  6. package/dist/agent/attachmentContext.d.ts.map +1 -0
  7. package/dist/agent/attachmentContext.js +72 -0
  8. package/dist/agent/attachmentContext.js.map +1 -0
  9. package/dist/agent/editCompletion.d.ts +16 -2
  10. package/dist/agent/editCompletion.d.ts.map +1 -1
  11. package/dist/agent/editCompletion.js +83 -1
  12. package/dist/agent/editCompletion.js.map +1 -1
  13. package/dist/agent/hostTools.d.ts +46 -0
  14. package/dist/agent/hostTools.d.ts.map +1 -0
  15. package/dist/agent/hostTools.js +98 -0
  16. package/dist/agent/hostTools.js.map +1 -0
  17. package/dist/agent/parseSendPayload.d.ts +3 -1
  18. package/dist/agent/parseSendPayload.d.ts.map +1 -1
  19. package/dist/agent/parseSendPayload.js +16 -0
  20. package/dist/agent/parseSendPayload.js.map +1 -1
  21. package/dist/agent/runAgentTask.d.ts +4 -1
  22. package/dist/agent/runAgentTask.d.ts.map +1 -1
  23. package/dist/agent/runAgentTask.js +16 -0
  24. package/dist/agent/runAgentTask.js.map +1 -1
  25. package/dist/agent/runValidationWithRepair.d.ts.map +1 -1
  26. package/dist/agent/runValidationWithRepair.js +6 -0
  27. package/dist/agent/runValidationWithRepair.js.map +1 -1
  28. package/dist/agent/tools/executeTool.d.ts.map +1 -1
  29. package/dist/agent/tools/executeTool.js +15 -1
  30. package/dist/agent/tools/executeTool.js.map +1 -1
  31. package/dist/agent/tools/types.d.ts +3 -0
  32. package/dist/agent/tools/types.d.ts.map +1 -1
  33. package/dist/agent/types.d.ts +37 -0
  34. package/dist/agent/types.d.ts.map +1 -1
  35. package/dist/agent/types.js.map +1 -1
  36. package/dist/agent/validateOptions.d.ts.map +1 -1
  37. package/dist/agent/validateOptions.js +10 -1
  38. package/dist/agent/validateOptions.js.map +1 -1
  39. package/dist/index.d.ts +4 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +2 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/providers/agentic/AgenticCustomProvider.d.ts.map +1 -1
  44. package/dist/providers/agentic/AgenticCustomProvider.js +21 -0
  45. package/dist/providers/agentic/AgenticCustomProvider.js.map +1 -1
  46. package/dist/providers/agentic/agentLoop.d.ts +4 -1
  47. package/dist/providers/agentic/agentLoop.d.ts.map +1 -1
  48. package/dist/providers/agentic/agentLoop.js +286 -265
  49. package/dist/providers/agentic/agentLoop.js.map +1 -1
  50. package/dist/providers/agentic/toolSchemas.d.ts +314 -0
  51. package/dist/providers/agentic/toolSchemas.d.ts.map +1 -1
  52. package/dist/providers/agentic/toolSchemas.js +7 -0
  53. package/dist/providers/agentic/toolSchemas.js.map +1 -1
  54. package/dist/providers/types.d.ts +4 -1
  55. package/dist/providers/types.d.ts.map +1 -1
  56. package/dist/providers/types.js.map +1 -1
  57. package/dist/runner/jobTypes.d.ts +3 -2
  58. package/dist/runner/jobTypes.d.ts.map +1 -1
  59. package/dist/runner/run.d.ts.map +1 -1
  60. package/dist/runner/run.js +6 -2
  61. package/dist/runner/run.js.map +1 -1
  62. package/dist/runner/validateJob.d.ts.map +1 -1
  63. package/dist/runner/validateJob.js +83 -0
  64. package/dist/runner/validateJob.js.map +1 -1
  65. package/docs/host-integration-image-placement.md +141 -0
  66. package/docs/sandbox-runner.md +22 -1
  67. package/package.json +2 -1
package/README.md CHANGED
@@ -45,6 +45,8 @@ auvira-sdk-run --job <editJobId>
45
45
 
46
46
  See [docs/sandbox-runner.md](docs/sandbox-runner.md) for job schema, NDJSON protocol, host integration, and session resume.
47
47
 
48
+ For image placement (attachments, completion rules, host tools), see [docs/host-integration-image-placement.md](docs/host-integration-image-placement.md).
49
+
48
50
  ## Quick start (local repo)
49
51
 
50
52
  ```ts
@@ -319,6 +321,7 @@ npm run test:real:multi-image
319
321
  | `AUVIRA_REAL_IMAGE_GEN_E2E=true` + `AUVIRA_IMAGE_GEN_ENABLED=true` | `test:runner:image-gen` |
320
322
  | `AUVIRA_REAL_IMAGE_API=true` + `AUVIRA_IMAGE_GEN_ENABLED=true` | `test:real:image-api` |
321
323
  | `AUVIRA_REAL_MULTI_IMAGE_E2E=true` | `test:real:multi-image` |
324
+ | `AUVIRA_REAL_ATTACHMENT_E2E=true` | `test:real:attachment-placement` |
322
325
 
323
326
  All still require `CUSTOM_MODEL_API_KEY` (and related `CUSTOM_MODEL_*` vars).
324
327
 
@@ -334,6 +337,8 @@ AUVIRA_VIBE_VERIFY_MODEL=MiniMax-M3 # optional override
334
337
 
335
338
  Multi-image harness e2e (`test:real:multi-image`) uses fixture pairs (Doraemon style reference + village texture decoration) with three scenarios:
336
339
 
340
+ Phase 3 attachment placement e2e (`test:real:attachment-placement`) verifies pre-uploaded `attachments` metadata, `get_attachment_urls`, serializable `completion.rules`, and an LLM judge — **no vision bytes**.
341
+
337
342
  1. **Reference style + decoration publish** — index:0 drives CSS palette only; index:1 published to `public/assets/edits/` and wired via `publicUrl`.
338
343
  2. **Combined styles + animation** — merge both vibes in CSS, publish index:1, add `@keyframes`/animation.
339
344
  3. **Explicit reference vs decoration** — strict role split; LLM judge verifies roles were not swapped.
@@ -462,6 +467,32 @@ await agent.send(payload, {
462
467
 
463
468
  **Harness early finish (v0.2.5+):** When `harnessPrompt` is active and a model turn produces an allowlisted checkpoint diff, the loop evaluates completion before stopping.
464
469
 
470
+ ### Image placement primitives (v0.6+)
471
+
472
+ - **Attachments** — pass `attachments: AgentAttachmentMeta[]` when files are already under `public/`. Vision bytes remain optional via `images[]`.
473
+ - **Serializable rules** — `completion.rules` gates file-class changes and required paths without an `isComplete` callback (sandbox-safe).
474
+ - **Host tools** — register `hostTools` on `Agent.create` / `Agent.send`; built-in `get_attachment_urls` is added when attachments are present.
475
+
476
+ ```ts
477
+ import { Agent, type HostToolRegistration } from "@auvira.ai/sdk";
478
+
479
+ await agent.send(
480
+ {
481
+ text: harnessPrompt,
482
+ attachments: [{ index: 0, publicUrl: "/uploads/bg.jpg", role: "decoration" }],
483
+ },
484
+ {
485
+ completion: {
486
+ mode: "multi_file_required",
487
+ rules: {
488
+ requiredChanges: [{ pattern: "siteConfig", required: true }],
489
+ requireAssetPublish: false,
490
+ },
491
+ },
492
+ },
493
+ );
494
+ ```
495
+
465
496
  Stream events emit Cursor-compatible tool names: `grep`, `read`, `glob`, `list_dir`, `search_replace`, `write`.
466
497
 
467
498
  ## Current limitations
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../src/agent/Agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAUpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAyBxD,0CAA0C;AAC1C,qBAAa,KAAK;IAQd,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM;IAR1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IACxD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;IAKP,gEAAgE;WACnD,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAchE,6DAA6D;WAChD,MAAM,CACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,KAAK,CAAC;IAKjB,oEAAoE;WACvD,MAAM,CACjB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,cAAc,CAAC;IAW1B,qEAAqE;IAC/D,IAAI,CACR,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,QAAQ,CAAC;IAgFpB,kEAAkE;IAClE,oBAAoB,IAAI,gBAAgB,EAAE;IAI1C,+DAA+D;IAC/D,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAIpD,kEAAkE;IAClE,mBAAmB,IAAI,eAAe,EAAE,GAAG,SAAS;IAIpD,qDAAqD;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBtB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7C"}
1
+ {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../src/agent/Agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAUpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAyBxD,0CAA0C;AAC1C,qBAAa,KAAK;IAQd,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM;IAR1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IACxD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;IAKP,gEAAgE;WACnD,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAchE,6DAA6D;WAChD,MAAM,CACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,KAAK,CAAC;IAKjB,oEAAoE;WACvD,MAAM,CACjB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,cAAc,CAAC;IAW1B,qEAAqE;IAC/D,IAAI,CACR,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,QAAQ,CAAC;IA2FpB,kEAAkE;IAClE,oBAAoB,IAAI,gBAAgB,EAAE;IAI1C,+DAA+D;IAC/D,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAIpD,kEAAkE;IAClE,mBAAmB,IAAI,eAAe,EAAE,GAAG,SAAS;IAIpD,qDAAqD;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBtB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7C"}
@@ -84,7 +84,14 @@ export class Agent {
84
84
  const mergedSendOptions = {
85
85
  ...options,
86
86
  screenshotBase64: parsed.screenshotBase64,
87
+ attachments: parsed.attachments.length > 0
88
+ ? parsed.attachments
89
+ : options?.attachments,
87
90
  };
91
+ const mergedHostTools = [
92
+ ...(this.createOptions.hostTools ?? []),
93
+ ...(options?.hostTools ?? []),
94
+ ];
88
95
  const secrets = [
89
96
  this.createOptions.gitlab?.token,
90
97
  this.createOptions.model.apiKey,
@@ -98,6 +105,8 @@ export class Agent {
98
105
  signal,
99
106
  agentId: this.agentId,
100
107
  images,
108
+ attachments: parsed.attachments,
109
+ hostTools: mergedHostTools.length > 0 ? mergedHostTools : undefined,
101
110
  conversationHistory: this.conversation.getTurns(),
102
111
  reuseWorkspace: reuseWorkspace ? this.lastWorkspace : undefined,
103
112
  onWorkspacePrepared: (workspace) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/agent/Agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EACL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAU/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,SAAS,iBAAiB,CACxB,GAAG,OAAuC;IAE1C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,OAAO,UAAU,CAAC,MAAM,CAAC;QAC3B,CAAC;QACD,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EACrC,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,0CAA0C;AAC1C,MAAM,OAAO,KAAK;IAQG;IACR;IARM,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAChD,aAAa,CAAgC;IAC7C,gBAAgB,CAAqB;IAC5B,UAAU,GAAG,IAAI,GAAG,EAAY,CAAC;IAC1C,MAAM,GAAG,KAAK,CAAC;IAEvB,YACmB,aAAiC,EACzC,OAAe;QADP,kBAAa,GAAb,aAAa,CAAoB;QACzC,YAAO,GAAP,OAAO,CAAQ;IACvB,CAAC;IAEJ,gEAAgE;IAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAA2B;QAC7C,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,QAAQ,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;YACzC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,QAAQ,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;YACzC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAC1D,CAAC;QACD,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,OAAe,EACf,OAA2B;QAE3B,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,oEAAoE;IACpE,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,OAAyB,EACzB,OAA2B;QAE3B,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACnD,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,IAAI,CACR,OAAyB,EACzB,OAA0B;QAE1B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,gBAAgB,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;QACxE,CAAC;QAED,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAElC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;QACxC,CAAC;QAED,MAAM,iBAAiB,GAAqB;YAC1C,GAAG,OAAO;YACV,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;SAC1C,CAAC;QAEF,MAAM,OAAO,GAAG;YACd,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK;YAChC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM;SAChC,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;QAE1E,MAAM,cAAc,GAClB,OAAO,EAAE,cAAc,KAAK,IAAI;YAChC,CAAC,OAAO,EAAE,cAAc,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;QAExE,MAAM,OAAO,GAAwB;YACnC,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM;YACN,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YACjD,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YAC/D,mBAAmB,EAAE,CAAC,SAAS,EAAE,EAAE;gBACjC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YACjC,CAAC;YACD,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;gBACpC,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBAC9C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;wBAC/B,KAAK,EAAE,MAAM,CAAC,EAAE;wBAChB,UAAU;wBACV,iBAAiB,EAAE,MAAM,CAAC,QAAQ;qBACnC,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,CAAC;wBACP,IAAI,EAAE,sBAAsB;wBAC5B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM;qBAC/C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;QAEF,MAAM,aAAa,GAAG,YAAY,CAChC,IAAI,CAAC,aAAa,EAClB,MAAM,CAAC,MAAM,EACb,iBAAiB,EACjB,GAAG,EACH,OAAO,CACR,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,QAAQ,CACtB,GAAG,EACH,aAAa,EACb,eAAe,EACf,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CACnC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,KAAK,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kEAAkE;IAClE,oBAAoB;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED,+DAA+D;IAC/D,mBAAmB,CAAC,MAAyB;QAC3C,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,CAAC;IAED,kEAAkE;IAClE,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CACvE,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAExB,IACE,IAAI,CAAC,aAAa;YAClB,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,UAAU;YACvD,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAAK,KAAK,EAC7C,CAAC;YACD,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/agent/Agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AgentAttachmentMeta } from "./types.js";
2
+ export declare const ATTACHMENTS_MANIFEST_RELATIVE = ".auvira/attachments.json";
3
+ /** Formats a product-agnostic UPLOADED ASSETS block for harness prompts. */
4
+ export declare function formatAttachmentsContextBlock(attachments: AgentAttachmentMeta[]): string;
5
+ /** Persists host attachment metadata to `.auvira/attachments.json`. */
6
+ export declare function writeAttachmentsManifest(workspacePath: string, attachments: AgentAttachmentMeta[]): Promise<string | undefined>;
7
+ /** Reads attachment metadata from `.auvira/attachments.json` if present. */
8
+ export declare function readAttachmentsManifest(workspacePath: string): Promise<AgentAttachmentMeta[]>;
9
+ //# sourceMappingURL=attachmentContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachmentContext.d.ts","sourceRoot":"","sources":["../../src/agent/attachmentContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,eAAO,MAAM,6BAA6B,6BAA6B,CAAC;AAExE,4EAA4E;AAC5E,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,mBAAmB,EAAE,GACjC,MAAM,CA8BR;AAeD,uEAAuE;AACvE,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,mBAAmB,EAAE,GACjC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B;AAED,4EAA4E;AAC5E,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAqBhC"}
@@ -0,0 +1,72 @@
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ export const ATTACHMENTS_MANIFEST_RELATIVE = ".auvira/attachments.json";
4
+ /** Formats a product-agnostic UPLOADED ASSETS block for harness prompts. */
5
+ export function formatAttachmentsContextBlock(attachments) {
6
+ if (attachments.length === 0) {
7
+ return "";
8
+ }
9
+ const lines = [
10
+ "UPLOADED ASSETS (order matters — index 0 is primary):",
11
+ ...attachments.map((attachment) => {
12
+ const parts = [
13
+ `index:${attachment.index}`,
14
+ `publicUrl=${attachment.publicUrl}`,
15
+ ];
16
+ if (attachment.destPath?.trim()) {
17
+ parts.push(`destPath=${attachment.destPath}`);
18
+ }
19
+ if (attachment.role?.trim()) {
20
+ parts.push(`role=${attachment.role}`);
21
+ }
22
+ if (attachment.mimeType?.trim()) {
23
+ parts.push(`mime=${attachment.mimeType}`);
24
+ }
25
+ if (attachment.label?.trim()) {
26
+ parts.push(`label=${attachment.label}`);
27
+ }
28
+ return `- ${parts.join(" ")}`;
29
+ }),
30
+ "Wire publicUrl in TSX/CSS (site-root paths). Do not use destPath or /public/... in src.",
31
+ ];
32
+ return lines.join("\n");
33
+ }
34
+ function normalizeAttachments(attachments) {
35
+ return attachments.map((attachment, index) => ({
36
+ index: attachment.index ?? index,
37
+ publicUrl: attachment.publicUrl.trim(),
38
+ ...(attachment.destPath?.trim() ? { destPath: attachment.destPath.trim() } : {}),
39
+ ...(attachment.mimeType?.trim() ? { mimeType: attachment.mimeType.trim() } : {}),
40
+ ...(attachment.role ? { role: attachment.role } : {}),
41
+ ...(attachment.label?.trim() ? { label: attachment.label.trim() } : {}),
42
+ }));
43
+ }
44
+ /** Persists host attachment metadata to `.auvira/attachments.json`. */
45
+ export async function writeAttachmentsManifest(workspacePath, attachments) {
46
+ if (attachments.length === 0) {
47
+ return undefined;
48
+ }
49
+ const normalized = normalizeAttachments(attachments);
50
+ const auviraDir = join(workspacePath, ".auvira");
51
+ await mkdir(auviraDir, { recursive: true });
52
+ const absolutePath = join(auviraDir, "attachments.json");
53
+ await writeFile(absolutePath, JSON.stringify(normalized, null, 2));
54
+ return absolutePath;
55
+ }
56
+ /** Reads attachment metadata from `.auvira/attachments.json` if present. */
57
+ export async function readAttachmentsManifest(workspacePath) {
58
+ try {
59
+ const raw = await readFile(join(workspacePath, ATTACHMENTS_MANIFEST_RELATIVE), "utf8");
60
+ const parsed = JSON.parse(raw);
61
+ if (!Array.isArray(parsed)) {
62
+ return [];
63
+ }
64
+ return normalizeAttachments(parsed.filter((item) => typeof item === "object" &&
65
+ item !== null &&
66
+ typeof item.publicUrl === "string"));
67
+ }
68
+ catch {
69
+ return [];
70
+ }
71
+ }
72
+ //# sourceMappingURL=attachmentContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachmentContext.js","sourceRoot":"","sources":["../../src/agent/attachmentContext.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AgentCompletionOptions, SelectedDomContext } from "./types.js";
1
+ import type { AgentCompletionOptions, SelectedDomContext, SerializableCompletionRules } from "./types.js";
2
2
  export declare const DEFAULT_STYLE_ASSET_PATTERNS: RegExp[];
3
3
  export declare const DEFAULT_WIRING_PATTERNS: RegExp[];
4
4
  export declare const DEFAULT_MULTI_STEP_LIMITS: {
@@ -21,6 +21,18 @@ export declare function isStyleOnlyDiff(changedFiles: string[], completion?: Age
21
21
  /** True when at least one changed file matches wiring patterns. */
22
22
  export declare function hasWiringChange(changedFiles: string[], completion?: AgentCompletionOptions): boolean;
23
23
  export declare function hasSelectedDomContext(selectedDom?: SelectedDomContext): boolean;
24
+ /** Evaluates serializable completion rules against changed files and workspace paths. */
25
+ export declare function evaluateSerializableCompletionRules(input: {
26
+ changedFiles: string[];
27
+ repoPath?: string;
28
+ rules?: SerializableCompletionRules;
29
+ completion?: AgentCompletionOptions;
30
+ hasVisionImages: boolean;
31
+ wiringComplete: boolean;
32
+ }): Promise<{
33
+ met: boolean;
34
+ nudge?: string;
35
+ }>;
24
36
  /** Evaluates whether harness early finish should proceed, continue, or fail. */
25
37
  export declare function evaluateHarnessCompletionGate(input: {
26
38
  changedFiles: string[];
@@ -30,7 +42,9 @@ export declare function evaluateHarnessCompletionGate(input: {
30
42
  selectedDom?: SelectedDomContext;
31
43
  completion?: AgentCompletionOptions;
32
44
  deferredFinishCount: number;
33
- }): HarnessCompletionGateResult;
45
+ repoPath?: string;
46
+ }): Promise<HarnessCompletionGateResult>;
34
47
  export declare function getWiringIncompleteNudge(): string;
35
48
  export declare function getAssetPublishIncompleteNudge(): string;
49
+ export declare function getCompletionRulesIncompleteNudge(): string;
36
50
  //# sourceMappingURL=editCompletion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editCompletion.d.ts","sourceRoot":"","sources":["../../src/agent/editCompletion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEtB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,4BAA4B,UAIxC,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAInC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAQX,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAErE,MAAM,MAAM,+BAA+B,GACvC,uBAAuB,GACvB,0BAA0B,GAC1B,qBAAqB,GACrB,mBAAmB,CAAC;AAExB,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,uBAAuB,CAAC;IAChC,cAAc,CAAC,EAAE,+BAA+B,CAAC;IACjD,YAAY,CAAC,EAAE,eAAe,GAAG,yBAAyB,GAAG,WAAW,CAAC;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8CD,+EAA+E;AAC/E,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,CAAC,EAAE,sBAAsB,GAClC,OAAO,CAYT;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,CAAC,EAAE,sBAAsB,GAClC,OAAO,CAGT;AAED,wBAAgB,qBAAqB,CACnC,WAAW,CAAC,EAAE,kBAAkB,GAC/B,OAAO,CAYT;AAyCD,gFAAgF;AAChF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,2BAA2B,CA6H9B;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD"}
1
+ {"version":3,"file":"editCompletion.d.ts","sourceRoot":"","sources":["../../src/agent/editCompletion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EAGtB,kBAAkB,EAClB,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,4BAA4B,UAIxC,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAInC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAWX,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAErE,MAAM,MAAM,+BAA+B,GACvC,uBAAuB,GACvB,0BAA0B,GAC1B,qBAAqB,GACrB,mBAAmB,CAAC;AAExB,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,uBAAuB,CAAC;IAChC,cAAc,CAAC,EAAE,+BAA+B,CAAC;IACjD,YAAY,CAAC,EAAE,eAAe,GAAG,yBAAyB,GAAG,WAAW,CAAC;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8CD,+EAA+E;AAC/E,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,CAAC,EAAE,sBAAsB,GAClC,OAAO,CAYT;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,CAAC,EAAE,sBAAsB,GAClC,OAAO,CAGT;AAED,wBAAgB,qBAAqB,CACnC,WAAW,CAAC,EAAE,kBAAkB,GAC/B,OAAO,CAYT;AAqDD,yFAAyF;AACzF,wBAAsB,mCAAmC,CAAC,KAAK,EAAE;IAC/D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,2BAA2B,CAAC;IACpC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiD5C;AAED,gFAAgF;AAChF,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IACzD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAwJvC;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED,wBAAgB,iCAAiC,IAAI,MAAM,CAE1D"}
@@ -1,3 +1,5 @@
1
+ import { access } from "node:fs/promises";
2
+ import { join } from "node:path";
1
3
  export const DEFAULT_STYLE_ASSET_PATTERNS = [
2
4
  /globals\.css$/i,
3
5
  /tailwind\.config/i,
@@ -15,6 +17,7 @@ export const DEFAULT_MULTI_STEP_LIMITS = {
15
17
  };
16
18
  const WIRING_INCOMPLETE_NUDGE = "Style files changed but pinned-target wiring is incomplete. Update config or component files that apply styles to the pinned target before stopping.";
17
19
  const ASSET_PUBLISH_INCOMPLETE_NUDGE = 'Component wiring references an image but no file exists under public/assets/. Call publish_reference_image with the correct source ("primary" or "index:N") before stopping.';
20
+ const COMPLETION_RULES_INCOMPLETE_NUDGE = "Completion rules are not satisfied yet. Update the required config/component files before stopping.";
18
21
  function compilePatterns(patterns) {
19
22
  return patterns.map((pattern) => new RegExp(pattern, "i"));
20
23
  }
@@ -87,6 +90,9 @@ function isCompletionContractActive(input) {
87
90
  if (completion.isComplete) {
88
91
  return true;
89
92
  }
93
+ if (completion.rules) {
94
+ return true;
95
+ }
90
96
  if (completion.requireWiringAfterStyle &&
91
97
  input.hasVisionImages &&
92
98
  hasSelectedDomContext(input.selectedDom)) {
@@ -94,8 +100,56 @@ function isCompletionContractActive(input) {
94
100
  }
95
101
  return completion.mode === "multi_file_required";
96
102
  }
103
+ function matchesRequirement(changedFiles, requirement) {
104
+ const pattern = new RegExp(requirement.pattern, "i");
105
+ return changedFiles.some((file) => pattern.test(normalizePath(file)));
106
+ }
107
+ /** Evaluates serializable completion rules against changed files and workspace paths. */
108
+ export async function evaluateSerializableCompletionRules(input) {
109
+ const rules = input.rules;
110
+ if (!rules) {
111
+ return { met: true };
112
+ }
113
+ for (const requirement of rules.requiredChanges ?? []) {
114
+ if (requirement.required === false) {
115
+ continue;
116
+ }
117
+ if (!matchesRequirement(input.changedFiles, requirement)) {
118
+ return {
119
+ met: false,
120
+ nudge: `${COMPLETION_RULES_INCOMPLETE_NUDGE} Missing required change matching /${requirement.pattern}/.`,
121
+ };
122
+ }
123
+ }
124
+ if (input.repoPath) {
125
+ for (const relPath of rules.requiredPaths ?? []) {
126
+ try {
127
+ await access(join(input.repoPath, relPath));
128
+ }
129
+ catch {
130
+ return {
131
+ met: false,
132
+ nudge: `${COMPLETION_RULES_INCOMPLETE_NUDGE} Required path missing: ${relPath}`,
133
+ };
134
+ }
135
+ }
136
+ }
137
+ const requireAssetPublish = rules.requireAssetPublish === true ||
138
+ (rules.requireAssetPublish !== false &&
139
+ requiresPublicAssetPublish(input.completion));
140
+ if (requireAssetPublish &&
141
+ input.hasVisionImages &&
142
+ input.wiringComplete &&
143
+ !hasPublicAssetChange(input.changedFiles)) {
144
+ return {
145
+ met: false,
146
+ nudge: getAssetPublishIncompleteNudge(),
147
+ };
148
+ }
149
+ return { met: true };
150
+ }
97
151
  /** Evaluates whether harness early finish should proceed, continue, or fail. */
98
- export function evaluateHarnessCompletionGate(input) {
152
+ export async function evaluateHarnessCompletionGate(input) {
99
153
  const styleOnly = isStyleOnlyDiff(input.changedFiles, input.completion);
100
154
  const wiringComplete = hasWiringChange(input.changedFiles, input.completion);
101
155
  const limits = resolveMultiStepLimits(input.completion);
@@ -174,6 +228,7 @@ export function evaluateHarnessCompletionGate(input) {
174
228
  };
175
229
  }
176
230
  if (requiresPublicAssetPublish(input.completion) &&
231
+ input.completion?.rules?.requireAssetPublish !== false &&
177
232
  input.hasVisionImages &&
178
233
  wiringComplete &&
179
234
  !hasPublicAssetChange(input.changedFiles)) {
@@ -192,6 +247,30 @@ export function evaluateHarnessCompletionGate(input) {
192
247
  wiringComplete,
193
248
  };
194
249
  }
250
+ const rulesResult = await evaluateSerializableCompletionRules({
251
+ changedFiles: input.changedFiles,
252
+ repoPath: input.repoPath,
253
+ rules: input.completion?.rules,
254
+ completion: input.completion,
255
+ hasVisionImages: input.hasVisionImages,
256
+ wiringComplete,
257
+ });
258
+ if (!rulesResult.met) {
259
+ if (input.deferredFinishCount >= limits.maxExtraTurnsAfterStyleOnly) {
260
+ return {
261
+ action: "fail",
262
+ styleOnly,
263
+ wiringComplete,
264
+ failMessage: rulesResult.nudge ?? "Completion rules not satisfied",
265
+ };
266
+ }
267
+ return {
268
+ action: "continue",
269
+ continueReason: "completion_callback",
270
+ styleOnly,
271
+ wiringComplete,
272
+ };
273
+ }
195
274
  }
196
275
  return {
197
276
  action: "finish",
@@ -206,4 +285,7 @@ export function getWiringIncompleteNudge() {
206
285
  export function getAssetPublishIncompleteNudge() {
207
286
  return ASSET_PUBLISH_INCOMPLETE_NUDGE;
208
287
  }
288
+ export function getCompletionRulesIncompleteNudge() {
289
+ return COMPLETION_RULES_INCOMPLETE_NUDGE;
290
+ }
209
291
  //# sourceMappingURL=editCompletion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editCompletion.js","sourceRoot":"","sources":["../../src/agent/editCompletion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editCompletion.js","sourceRoot":"","sources":["../../src/agent/editCompletion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { AgentAttachmentMeta, SelectedDomContext } from "./types.js";
2
+ export interface HostToolDefinition {
3
+ name: string;
4
+ description: string;
5
+ parameters: Record<string, unknown>;
6
+ }
7
+ export interface HostToolContext {
8
+ repoPath: string;
9
+ attachments?: AgentAttachmentMeta[];
10
+ selectedDom?: SelectedDomContext;
11
+ }
12
+ export interface HostToolHandlerResult {
13
+ ok: boolean;
14
+ output: string;
15
+ meta?: Record<string, unknown>;
16
+ }
17
+ export type HostToolHandler = (args: Record<string, unknown>, ctx: HostToolContext) => Promise<HostToolHandlerResult>;
18
+ export interface HostToolRegistration {
19
+ definition: HostToolDefinition;
20
+ handler: HostToolHandler;
21
+ }
22
+ /** Validates host tool registrations and rejects core tool name collisions. */
23
+ export declare function validateHostToolRegistrations(registrations: HostToolRegistration[]): void;
24
+ /** Merges user host tools with SDK builtins for the current run. */
25
+ export declare function resolveHostToolsForRun(input: {
26
+ hostTools?: HostToolRegistration[];
27
+ includeAttachmentUrlsTool?: boolean;
28
+ }): HostToolRegistration[];
29
+ /** Built-in host tool that returns canonical attachment metadata for the run. */
30
+ export declare function createGetAttachmentUrlsHostTool(): HostToolRegistration;
31
+ /** Registers host tool handlers for a single agent run. */
32
+ export declare function registerHostToolsForRun(registrations: HostToolRegistration[]): void;
33
+ /** Clears host tool handlers after a run completes. */
34
+ export declare function clearHostToolsForRun(): void;
35
+ /** Dispatches a host tool call when registered for the current run. */
36
+ export declare function executeHostTool(toolName: string, args: Record<string, unknown>, ctx: HostToolContext): Promise<HostToolHandlerResult | undefined>;
37
+ /** Converts host tool definitions to OpenAI-compatible tool schemas. */
38
+ export declare function hostToolsToOpenAiDefinitions(registrations: HostToolRegistration[]): Array<{
39
+ type: "function";
40
+ function: {
41
+ name: string;
42
+ description: string;
43
+ parameters: Record<string, unknown>;
44
+ };
45
+ }>;
46
+ //# sourceMappingURL=hostTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostTools.d.ts","sourceRoot":"","sources":["../../src/agent/hostTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAG1E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,eAAe,KACjB,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAEpC,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,eAAe,CAAC;CAC1B;AAiBD,+EAA+E;AAC/E,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,oBAAoB,EAAE,GACpC,IAAI,CAiBN;AAED,oEAAoE;AACpE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACnC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC,GAAG,oBAAoB,EAAE,CAYzB;AAED,iFAAiF;AACjF,wBAAgB,+BAA+B,IAAI,oBAAoB,CAuBtE;AAID,2DAA2D;AAC3D,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,oBAAoB,EAAE,GACpC,IAAI,CAQN;AAED,uDAAuD;AACvD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED,uEAAuE;AACvE,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAM5C;AAED,wEAAwE;AACxE,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,oBAAoB,EAAE,GACpC,KAAK,CAAC;IACP,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;CACH,CAAC,CASD"}
@@ -0,0 +1,98 @@
1
+ import { readAttachmentsManifest } from "./attachmentContext.js";
2
+ const CORE_TOOL_NAMES = new Set([
3
+ "grep",
4
+ "read",
5
+ "read_file",
6
+ "glob",
7
+ "list_dir",
8
+ "search_replace",
9
+ "edit",
10
+ "write",
11
+ "publish_reference_image",
12
+ "generate_image",
13
+ ]);
14
+ const HOST_TOOL_NAME_PATTERN = /^[a-z][a-z0-9_]{0,63}$/;
15
+ /** Validates host tool registrations and rejects core tool name collisions. */
16
+ export function validateHostToolRegistrations(registrations) {
17
+ const seen = new Set();
18
+ for (const registration of registrations) {
19
+ const name = registration.definition.name.trim().toLowerCase();
20
+ if (!HOST_TOOL_NAME_PATTERN.test(name)) {
21
+ throw new Error(`Invalid host tool name "${registration.definition.name}" — use lowercase letters, digits, and underscores`);
22
+ }
23
+ if (CORE_TOOL_NAMES.has(name)) {
24
+ throw new Error(`Host tool name collides with core tool: ${name}`);
25
+ }
26
+ if (seen.has(name)) {
27
+ throw new Error(`Duplicate host tool registration: ${name}`);
28
+ }
29
+ seen.add(name);
30
+ }
31
+ }
32
+ /** Merges user host tools with SDK builtins for the current run. */
33
+ export function resolveHostToolsForRun(input) {
34
+ const registrations = [...(input.hostTools ?? [])];
35
+ if (input.includeAttachmentUrlsTool) {
36
+ const hasBuiltin = registrations.some((tool) => tool.definition.name === "get_attachment_urls");
37
+ if (!hasBuiltin) {
38
+ registrations.push(createGetAttachmentUrlsHostTool());
39
+ }
40
+ }
41
+ validateHostToolRegistrations(registrations);
42
+ return registrations;
43
+ }
44
+ /** Built-in host tool that returns canonical attachment metadata for the run. */
45
+ export function createGetAttachmentUrlsHostTool() {
46
+ return {
47
+ definition: {
48
+ name: "get_attachment_urls",
49
+ description: "Returns uploaded attachment metadata (index, publicUrl, destPath, role) for the current run.",
50
+ parameters: {
51
+ type: "object",
52
+ properties: {},
53
+ },
54
+ },
55
+ handler: async (_args, ctx) => {
56
+ const attachments = ctx.attachments && ctx.attachments.length > 0
57
+ ? ctx.attachments
58
+ : await readAttachmentsManifest(ctx.repoPath);
59
+ return {
60
+ ok: true,
61
+ output: JSON.stringify({ attachments }, null, 2),
62
+ meta: { count: attachments.length },
63
+ };
64
+ },
65
+ };
66
+ }
67
+ const hostToolHandlers = new Map();
68
+ /** Registers host tool handlers for a single agent run. */
69
+ export function registerHostToolsForRun(registrations) {
70
+ hostToolHandlers.clear();
71
+ for (const registration of registrations) {
72
+ hostToolHandlers.set(registration.definition.name.toLowerCase(), registration.handler);
73
+ }
74
+ }
75
+ /** Clears host tool handlers after a run completes. */
76
+ export function clearHostToolsForRun() {
77
+ hostToolHandlers.clear();
78
+ }
79
+ /** Dispatches a host tool call when registered for the current run. */
80
+ export async function executeHostTool(toolName, args, ctx) {
81
+ const handler = hostToolHandlers.get(toolName.toLowerCase());
82
+ if (!handler) {
83
+ return undefined;
84
+ }
85
+ return handler(args, ctx);
86
+ }
87
+ /** Converts host tool definitions to OpenAI-compatible tool schemas. */
88
+ export function hostToolsToOpenAiDefinitions(registrations) {
89
+ return registrations.map((registration) => ({
90
+ type: "function",
91
+ function: {
92
+ name: registration.definition.name,
93
+ description: registration.definition.description,
94
+ parameters: registration.definition.parameters,
95
+ },
96
+ }));
97
+ }
98
+ //# sourceMappingURL=hostTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostTools.js","sourceRoot":"","sources":["../../src/agent/hostTools.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
- import type { AgentImageInput, AgentSendOptions } from "./types.js";
1
+ import type { AgentAttachmentMeta, AgentImageInput, AgentSendOptions } from "./types.js";
2
2
  export type AgentSendPayload = string | {
3
3
  text: string;
4
4
  images?: AgentImageInput[];
5
+ attachments?: AgentAttachmentMeta[];
5
6
  };
6
7
  export interface ParsedSendPayload {
7
8
  prompt: string;
8
9
  images: AgentImageInput[];
10
+ attachments: AgentAttachmentMeta[];
9
11
  /** @deprecated First image as raw base64 for legacy screenshot writers. */
10
12
  screenshotBase64?: string;
11
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parseSendPayload.d.ts","sourceRoot":"","sources":["../../src/agent/parseSendPayload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAgBD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,gBAAqB,GAC7B,iBAAiB,CA0BnB;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAWA;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOvD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAK3D;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,8EAA8E;AAC9E,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQrE"}
1
+ {"version":3,"file":"parseSendPayload.d.ts","sourceRoot":"","sources":["../../src/agent/parseSendPayload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzF,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACrC,CAAC;AAEN,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAgCD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,gBAAqB,GAC7B,iBAAiB,CAgCnB;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAWA;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOvD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAK3D;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,8EAA8E;AAC9E,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQrE"}