@dudousxd/nestjs-agent-opencode 0.5.0 → 1.0.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.
package/README.md CHANGED
@@ -188,7 +188,7 @@ The endpoint serves turns, nothing else. A token alone runs nothing:
188
188
  - `remember` is served here only — it is not added to the module's registry, so it is not on
189
189
  `AgentMcpServerModule` or the `/tools` catalog.
190
190
 
191
- The module's `guards` are not applied to the endpoint (its callers are OpenCode sessions, not the
191
+ The module's `decorators` are not applied to the endpoint (its callers are OpenCode sessions, not the
192
192
  app's users); a global guard of your own must let `opencode/mcp` through.
193
193
 
194
194
  ## Several processes
@@ -47,6 +47,7 @@ var InMemoryOpenCodeSessionStore = class {
47
47
  };
48
48
 
49
49
  // src/mcp.controller.ts
50
+ var import_nestjs_agent_core = require("@dudousxd/nestjs-agent-core");
50
51
  var import_common = require("@nestjs/common");
51
52
 
52
53
  // src/tokens.ts
@@ -143,6 +144,7 @@ _ts_decorate([
143
144
  _ts_metadata("design:returntype", void 0)
144
145
  ], OpenCodeMcpController.prototype, "delete", null);
145
146
  OpenCodeMcpController = _ts_decorate([
147
+ (0, import_nestjs_agent_core.CanAnyone)(),
146
148
  (0, import_common.Controller)("opencode/mcp"),
147
149
  _ts_param(0, (0, import_common.Inject)(OPENCODE_MCP_ENDPOINT)),
148
150
  _ts_metadata("design:type", Function),
@@ -153,7 +155,7 @@ OpenCodeMcpController = _ts_decorate([
153
155
 
154
156
  // src/mcp.ts
155
157
  var import_node_crypto = require("crypto");
156
- var import_nestjs_agent_core3 = require("@dudousxd/nestjs-agent-core");
158
+ var import_nestjs_agent_core4 = require("@dudousxd/nestjs-agent-core");
157
159
  var import_genui = require("@dudousxd/nestjs-agent-core/genui");
158
160
  var import_server = require("@modelcontextprotocol/sdk/server/index.js");
159
161
  var import_streamableHttp = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
@@ -161,11 +163,11 @@ var import_zod_json_schema_compat = require("@modelcontextprotocol/sdk/server/zo
161
163
  var import_types = require("@modelcontextprotocol/sdk/types.js");
162
164
 
163
165
  // src/turn.ts
164
- var import_nestjs_agent_core2 = require("@dudousxd/nestjs-agent-core");
166
+ var import_nestjs_agent_core3 = require("@dudousxd/nestjs-agent-core");
165
167
  var import_common2 = require("@nestjs/common");
166
168
 
167
169
  // src/forms.ts
168
- var import_nestjs_agent_core = require("@dudousxd/nestjs-agent-core");
170
+ var import_nestjs_agent_core2 = require("@dudousxd/nestjs-agent-core");
169
171
  function toQuestion(field) {
170
172
  const required = field.required === true ? {
171
173
  required: true
@@ -235,7 +237,7 @@ function toFormAnswer(form, answers = {}) {
235
237
  for (const field of formFields(form)) {
236
238
  const question = toQuestion(field);
237
239
  const values = answers[field.key] ?? question.defaults ?? [];
238
- const problem = (0, import_nestjs_agent_core.validateElicitationAnswer)(question, values);
240
+ const problem = (0, import_nestjs_agent_core2.validateElicitationAnswer)(question, values);
239
241
  if (problem) throw new FormAnswerError(`answers["${field.key}"] ${problem}`);
240
242
  const present = values.filter((v) => v !== "");
241
243
  const [value] = present;
@@ -547,7 +549,7 @@ var OpenCodeTurn = class {
547
549
  });
548
550
  }
549
551
  async write(event) {
550
- await this.a.writer.write((0, import_nestjs_agent_core2.encodeStreamEvent)(event));
552
+ await this.a.writer.write((0, import_nestjs_agent_core3.encodeStreamEvent)(event));
551
553
  }
552
554
  async step() {
553
555
  if (this.stepOpen) return;
@@ -1081,7 +1083,7 @@ ${delta}` : delta;
1081
1083
  const ttlMs = requirement.ttlMs !== void 0 && Number.isFinite(requirement.ttlMs) && requirement.ttlMs > 0 ? Math.floor(requirement.ttlMs) : void 0;
1082
1084
  const expiresAt = ttlMs !== void 0 ? new Date(Date.now() + ttlMs).toISOString() : void 0;
1083
1085
  const tool = this.a.approvalPresentation?.(action);
1084
- const confirmation = tool !== void 0 ? (0, import_nestjs_agent_core2.resolveToolConfirmation)(tool.name, args, tool.presentation) : void 0;
1086
+ const confirmation = tool !== void 0 ? (0, import_nestjs_agent_core3.resolveToolConfirmation)(tool.name, args, tool.presentation) : void 0;
1085
1087
  this.segment.calls.push({
1086
1088
  id: req.id,
1087
1089
  name: action,
@@ -1308,7 +1310,7 @@ ${delta}` : delta;
1308
1310
  answer: toFormAnswer(form, answer.answers)
1309
1311
  });
1310
1312
  }
1311
- const result = (0, import_nestjs_agent_core2.settleElicitation)(request, answer);
1313
+ const result = (0, import_nestjs_agent_core3.settleElicitation)(request, answer);
1312
1314
  await this.a.store.updateToolCall({
1313
1315
  toolCallId: form.id,
1314
1316
  status: result.skipped ? "rejected" : "executed",
@@ -1663,7 +1665,7 @@ function isZodSchema(schema) {
1663
1665
  }
1664
1666
  __name(isZodSchema, "isZodSchema");
1665
1667
  function toInputSchema(schema) {
1666
- const extension = (0, import_nestjs_agent_core3.schemaExtensionOf)(schema);
1668
+ const extension = (0, import_nestjs_agent_core4.schemaExtensionOf)(schema);
1667
1669
  if (extension !== void 0) {
1668
1670
  const base = toInputSchema(extension.base);
1669
1671
  const properties = {
@@ -1707,7 +1709,7 @@ var OpenCodeMcpEndpoint2 = class {
1707
1709
  turns;
1708
1710
  tokens;
1709
1711
  /** Genui telemetry of the UI calls OpenCode makes (its code mode calls tools here, not in the loop). */
1710
- genui = new import_nestjs_agent_core3.GenuiRunRecorder();
1712
+ genui = new import_nestjs_agent_core4.GenuiRunRecorder();
1711
1713
  constructor(turns, tokens) {
1712
1714
  this.turns = turns;
1713
1715
  this.tokens = tokens;
@@ -1788,9 +1790,9 @@ var OpenCodeMcpEndpoint2 = class {
1788
1790
  }));
1789
1791
  if (this.turns.memoryWritable()) {
1790
1792
  tools.push({
1791
- name: import_nestjs_agent_core3.REMEMBER_TOOL_NAME,
1792
- description: import_nestjs_agent_core3.REMEMBER_TOOL_DESCRIPTION,
1793
- inputSchema: toInputSchema(import_nestjs_agent_core3.rememberInputSchema),
1793
+ name: import_nestjs_agent_core4.REMEMBER_TOOL_NAME,
1794
+ description: import_nestjs_agent_core4.REMEMBER_TOOL_DESCRIPTION,
1795
+ inputSchema: toInputSchema(import_nestjs_agent_core4.rememberInputSchema),
1794
1796
  annotations: {
1795
1797
  readOnlyHint: false
1796
1798
  }
@@ -1807,7 +1809,7 @@ var OpenCodeMcpEndpoint2 = class {
1807
1809
  if (turn === void 0) {
1808
1810
  throw new OpenCodeToolRefusedError("This endpoint serves OpenCode turns: no turn of yours is running on this session.");
1809
1811
  }
1810
- const output = name === import_nestjs_agent_core3.REMEMBER_TOOL_NAME && this.turns.memoryWritable() ? await this.remember(turn, args) : await this.invoke(turn, actor, name, args, String(extra.requestId ?? ""));
1812
+ const output = name === import_nestjs_agent_core4.REMEMBER_TOOL_NAME && this.turns.memoryWritable() ? await this.remember(turn, args) : await this.invoke(turn, actor, name, args, String(extra.requestId ?? ""));
1811
1813
  return {
1812
1814
  content: [
1813
1815
  {
@@ -1833,9 +1835,9 @@ var OpenCodeMcpEndpoint2 = class {
1833
1835
  async invoke(turn, actor, name, args, requestId) {
1834
1836
  const { registry } = this.turns;
1835
1837
  const spec = registry.spec(name);
1836
- if (spec === void 0 || LOOP_SERVED_KINDS.has(spec.kind)) throw new import_nestjs_agent_core3.ToolNotFoundError(name);
1838
+ if (spec === void 0 || LOOP_SERVED_KINDS.has(spec.kind)) throw new import_nestjs_agent_core4.ToolNotFoundError(name);
1837
1839
  const allowed = this.turns.allowedTools(turn.input);
1838
- if (allowed !== void 0 && !allowed.includes(name)) throw new import_nestjs_agent_core3.ToolNotFoundError(name);
1840
+ if (allowed !== void 0 && !allowed.includes(name)) throw new import_nestjs_agent_core4.ToolNotFoundError(name);
1839
1841
  if (spec.kind === "action" && !await this.turns.spendApproval(turn.runId, name, turn.input)) {
1840
1842
  throw new OpenCodeToolRefusedError(`"${name}" is an action and nobody approved this call; ask for the permission first.`);
1841
1843
  }
@@ -1877,7 +1879,7 @@ var OpenCodeMcpEndpoint2 = class {
1877
1879
  }
1878
1880
  /** `remember`: one fact, at the actor's own scope only — as the loop serves it. */
1879
1881
  async remember(turn, args) {
1880
- const parsed = await import_nestjs_agent_core3.rememberInputSchema["~standard"].validate(args ?? {});
1882
+ const parsed = await import_nestjs_agent_core4.rememberInputSchema["~standard"].validate(args ?? {});
1881
1883
  if (parsed.issues !== void 0) {
1882
1884
  throw new OpenCodeToolRefusedError(`remember: ${parsed.issues.map((issue) => issue.message).join("; ")}`);
1883
1885
  }
@@ -1886,13 +1888,13 @@ var OpenCodeMcpEndpoint2 = class {
1886
1888
  };
1887
1889
 
1888
1890
  // src/runner.ts
1889
- var import_nestjs_agent_core5 = require("@dudousxd/nestjs-agent-core");
1891
+ var import_nestjs_agent_core6 = require("@dudousxd/nestjs-agent-core");
1890
1892
  var import_common5 = require("@nestjs/common");
1891
1893
 
1892
1894
  // src/turns.ts
1893
1895
  var import_node_crypto2 = require("crypto");
1894
1896
  var import_nestjs_agent = require("@dudousxd/nestjs-agent");
1895
- var import_nestjs_agent_core4 = require("@dudousxd/nestjs-agent-core");
1897
+ var import_nestjs_agent_core5 = require("@dudousxd/nestjs-agent-core");
1896
1898
  var import_common4 = require("@nestjs/common");
1897
1899
 
1898
1900
  // src/event-hub.ts
@@ -2071,7 +2073,7 @@ var OpenCodeTurns = class {
2071
2073
  this.memory = memory;
2072
2074
  this.queue = queue;
2073
2075
  this.toolsTokens = toolsTokens2;
2074
- this.prices = new import_nestjs_agent_core4.ModelPriceResolver({
2076
+ this.prices = new import_nestjs_agent_core5.ModelPriceResolver({
2075
2077
  pricingStore,
2076
2078
  catalog: agentOptions?.priceCatalog,
2077
2079
  log: {
@@ -2091,10 +2093,10 @@ var OpenCodeTurns = class {
2091
2093
  const tokens = usage.inputTokens + usage.outputTokens;
2092
2094
  const reported = reportedCostUsd !== void 0 && (reportedCostUsd > 0 || tokens === 0);
2093
2095
  if (reported && this.settings.cost !== "estimate") {
2094
- return (0, import_nestjs_agent_core4.resolveUsageCost)(usage, reportedCostUsd, void 0);
2096
+ return (0, import_nestjs_agent_core5.resolveUsageCost)(usage, reportedCostUsd, void 0);
2095
2097
  }
2096
2098
  const price = model !== void 0 && tokens > 0 ? await this.prices.priceFor(priceRef(model)) : void 0;
2097
- return (0, import_nestjs_agent_core4.resolveUsageCost)(usage, price === void 0 ? reportedCostUsd : void 0, price);
2099
+ return (0, import_nestjs_agent_core5.resolveUsageCost)(usage, price === void 0 ? reportedCostUsd : void 0, price);
2098
2100
  }
2099
2101
  /** The tools server's name in OpenCode. */
2100
2102
  get toolsServer() {
@@ -2149,7 +2151,7 @@ var OpenCodeTurns = class {
2149
2151
  const memory = this.memory;
2150
2152
  const write = memory?.provider.write?.bind(memory.provider);
2151
2153
  if (memory === void 0 || write === void 0) return "Memory is read-only here.";
2152
- const max = memory.maxFactChars ?? import_nestjs_agent_core4.DEFAULT_MAX_FACT_CHARS;
2154
+ const max = memory.maxFactChars ?? import_nestjs_agent_core5.DEFAULT_MAX_FACT_CHARS;
2153
2155
  if (input.fact.length > max) return `Not recorded: a fact is at most ${max} characters.`;
2154
2156
  const actor = turn.input.actor;
2155
2157
  const scopeCtx = {
@@ -2159,9 +2161,9 @@ var OpenCodeTurns = class {
2159
2161
  agentName: turn.input.agentName
2160
2162
  } : {}
2161
2163
  };
2162
- const scopes = await (memory.scopes ?? import_nestjs_agent_core4.defaultScopeResolver).resolve(scopeCtx);
2163
- const scope = (0, import_nestjs_agent_core4.actorScope)(actor);
2164
- const verdict = (0, import_nestjs_agent_core4.memoryWriteVerdict)({
2164
+ const scopes = await (memory.scopes ?? import_nestjs_agent_core5.defaultScopeResolver).resolve(scopeCtx);
2165
+ const scope = (0, import_nestjs_agent_core5.actorScope)(actor);
2166
+ const verdict = (0, import_nestjs_agent_core5.memoryWriteVerdict)({
2165
2167
  scope,
2166
2168
  scopes,
2167
2169
  actor,
@@ -2243,7 +2245,7 @@ var OpenCodeTurns = class {
2243
2245
  runId,
2244
2246
  emitUi: uiEmitter(scope(runId), async (component) => {
2245
2247
  const writer = await this.sink.open(runId);
2246
- await writer.write((0, import_nestjs_agent_core4.encodeStreamEvent)({
2248
+ await writer.write((0, import_nestjs_agent_core5.encodeStreamEvent)({
2247
2249
  kind: "ui",
2248
2250
  ...component
2249
2251
  }));
@@ -2571,12 +2573,12 @@ ${transcript}` : "",
2571
2573
  const memory = this.memory;
2572
2574
  if (memory === void 0) return void 0;
2573
2575
  const ctx = this.scopeContext(input);
2574
- const scopes = await (memory.scopes ?? import_nestjs_agent_core4.defaultScopeResolver).resolve(ctx);
2576
+ const scopes = await (memory.scopes ?? import_nestjs_agent_core5.defaultScopeResolver).resolve(ctx);
2575
2577
  const records = await memory.provider.list({
2576
2578
  scopes,
2577
2579
  ctx
2578
2580
  });
2579
- const digest = (0, import_nestjs_agent_core4.resolveMemoryDigest)({
2581
+ const digest = (0, import_nestjs_agent_core5.resolveMemoryDigest)({
2580
2582
  records,
2581
2583
  scopes,
2582
2584
  ...memory.maxMemories !== void 0 ? {
@@ -2584,7 +2586,7 @@ ${transcript}` : "",
2584
2586
  } : {}
2585
2587
  });
2586
2588
  if (digest.entries.length === 0) return void 0;
2587
- return (0, import_nestjs_agent_core4.buildMemoryBlock)({
2589
+ return (0, import_nestjs_agent_core5.buildMemoryBlock)({
2588
2590
  entries: digest.entries,
2589
2591
  writable: this.memoryWritable(),
2590
2592
  partial: digest.omitted > 0
@@ -2598,12 +2600,12 @@ ${transcript}` : "",
2598
2600
  const skills = this.skills;
2599
2601
  if (skills === void 0 || client.file === void 0 || directory === void 0) return [];
2600
2602
  const ctx = this.scopeContext(input);
2601
- const scopes = await (skills.scopes ?? import_nestjs_agent_core4.defaultScopeResolver).resolve(ctx);
2603
+ const scopes = await (skills.scopes ?? import_nestjs_agent_core5.defaultScopeResolver).resolve(ctx);
2602
2604
  const summaries = await skills.provider.list({
2603
2605
  scopes,
2604
2606
  ctx
2605
2607
  });
2606
- const { entries } = (0, import_nestjs_agent_core4.resolveSkillCatalog)(summaries, scopes, skills.maxSkills);
2608
+ const { entries } = (0, import_nestjs_agent_core5.resolveSkillCatalog)(summaries, scopes, skills.maxSkills);
2607
2609
  const dir = this.settings.skillsDir ?? ".opencode/skills";
2608
2610
  const written = [];
2609
2611
  for (const entry of entries) {
@@ -2842,7 +2844,7 @@ ${body}
2842
2844
  current?.stop();
2843
2845
  const server = await this.host.server(input.actor);
2844
2846
  const deps = this.deps.forAgent(input.agentName);
2845
- const policy = deps.approvalPolicy ?? new import_nestjs_agent_core4.DefaultApprovalPolicy();
2847
+ const policy = deps.approvalPolicy ?? new import_nestjs_agent_core5.DefaultApprovalPolicy();
2846
2848
  const writer = await this.sink.open(input.sinkRunId ?? runId);
2847
2849
  const turn = new OpenCodeTurn({
2848
2850
  runId,
@@ -2952,7 +2954,7 @@ ${body}
2952
2954
  const ui = amendment.ui ?? [];
2953
2955
  const last = result.messages.at(-1);
2954
2956
  if (ui.length > 0) {
2955
- for (const component of ui) await writer.write((0, import_nestjs_agent_core4.encodeStreamEvent)({
2957
+ for (const component of ui) await writer.write((0, import_nestjs_agent_core5.encodeStreamEvent)({
2956
2958
  kind: "ui",
2957
2959
  ...component
2958
2960
  }));
@@ -2999,18 +3001,18 @@ ${body}
2999
3001
  await this.amend(writer, result);
3000
3002
  if (outcome.status === "interrupted") {
3001
3003
  this.logger.log(`agent run ${runId} cancelled`);
3002
- await Promise.resolve(this.store.failUnsettledToolCalls?.(runId, import_nestjs_agent_core4.RUN_ENDED_BEFORE_TOOL_CALL)).catch(() => 0);
3004
+ await Promise.resolve(this.store.failUnsettledToolCalls?.(runId, import_nestjs_agent_core5.RUN_ENDED_BEFORE_TOOL_CALL)).catch(() => 0);
3003
3005
  await this.handoff(writer, input, runId, "cancelled");
3004
- await (0, import_nestjs_agent_core4.releaseThreadRun)(this.store, input.threadId, runId);
3005
- await writer.write((0, import_nestjs_agent_core4.encodeStreamEvent)({
3006
+ await (0, import_nestjs_agent_core5.releaseThreadRun)(this.store, input.threadId, runId);
3007
+ await writer.write((0, import_nestjs_agent_core5.encodeStreamEvent)({
3006
3008
  kind: "cancelled"
3007
3009
  }));
3008
3010
  await writer.end();
3009
- (0, import_nestjs_agent_core4.publishAgentRunCancelled)({
3011
+ (0, import_nestjs_agent_core5.publishAgentRunCancelled)({
3010
3012
  runId,
3011
3013
  threadId: input.threadId,
3012
3014
  durationMs,
3013
- context: (0, import_nestjs_agent_core4.agentRunContext)(input)
3015
+ context: (0, import_nestjs_agent_core5.agentRunContext)(input)
3014
3016
  });
3015
3017
  await this.store.recordRunEnd?.({
3016
3018
  runId,
@@ -3019,7 +3021,7 @@ ${body}
3019
3021
  });
3020
3022
  } else {
3021
3023
  await this.handoff(writer, input, runId, "completed");
3022
- await (0, import_nestjs_agent_core4.releaseThreadRun)(this.store, input.threadId, runId);
3024
+ await (0, import_nestjs_agent_core5.releaseThreadRun)(this.store, input.threadId, runId);
3023
3025
  await writer.end();
3024
3026
  await this.store.recordRunEnd?.({
3025
3027
  runId,
@@ -3038,15 +3040,15 @@ ${body}
3038
3040
  error
3039
3041
  }, durationMs, usage);
3040
3042
  const worded = (await this.amend(writer, result)).error;
3041
- const message = worded ?? (0, import_nestjs_agent_core4.streamFailure)(new Error(error)).message;
3043
+ const message = worded ?? (0, import_nestjs_agent_core5.streamFailure)(new Error(error)).message;
3042
3044
  this.logger.error(`agent run ${runId} failed: ${error}`);
3043
- (0, import_nestjs_agent_core4.publishAgentRunFailed)({
3045
+ (0, import_nestjs_agent_core5.publishAgentRunFailed)({
3044
3046
  runId,
3045
3047
  threadId: input.threadId,
3046
3048
  code: "opencode_failed",
3047
3049
  message: error,
3048
3050
  durationMs,
3049
- context: (0, import_nestjs_agent_core4.agentRunContext)(input)
3051
+ context: (0, import_nestjs_agent_core5.agentRunContext)(input)
3050
3052
  });
3051
3053
  await this.store.recordRunEnd?.({
3052
3054
  runId,
@@ -3055,9 +3057,9 @@ ${body}
3055
3057
  errorCode: "opencode_failed",
3056
3058
  errorMessage: error
3057
3059
  });
3058
- await Promise.resolve(this.store.failUnsettledToolCalls?.(runId, import_nestjs_agent_core4.RUN_ENDED_BEFORE_TOOL_CALL)).catch(() => 0);
3060
+ await Promise.resolve(this.store.failUnsettledToolCalls?.(runId, import_nestjs_agent_core5.RUN_ENDED_BEFORE_TOOL_CALL)).catch(() => 0);
3059
3061
  await this.handoff(writer, input, runId, "failed", error);
3060
- await (0, import_nestjs_agent_core4.releaseThreadRun)(this.store, input.threadId, runId);
3062
+ await (0, import_nestjs_agent_core5.releaseThreadRun)(this.store, input.threadId, runId);
3061
3063
  await writer.fail({
3062
3064
  code: "opencode_failed",
3063
3065
  message
@@ -3087,7 +3089,7 @@ ${body}
3087
3089
  error
3088
3090
  } : {}
3089
3091
  }, (next, nextRunId) => startNext(next, nextRunId));
3090
- if (frame !== void 0) await writer.write((0, import_nestjs_agent_core4.encodeStreamEvent)(frame));
3092
+ if (frame !== void 0) await writer.write((0, import_nestjs_agent_core5.encodeStreamEvent)(frame));
3091
3093
  } catch (failure) {
3092
3094
  this.logger.error(`could not advance the queue of thread ${input.threadId} after run ${runId}: ${failure instanceof Error ? failure.message : String(failure)}`);
3093
3095
  }
@@ -3098,22 +3100,22 @@ OpenCodeTurns = _ts_decorate2([
3098
3100
  _ts_param2(0, (0, import_common4.Inject)(OPENCODE_HOST)),
3099
3101
  _ts_param2(1, (0, import_common4.Inject)(OPENCODE_SESSIONS)),
3100
3102
  _ts_param2(2, (0, import_common4.Inject)(OPENCODE_OPTIONS)),
3101
- _ts_param2(3, (0, import_common4.Inject)(import_nestjs_agent_core4.AGENT_STORE)),
3102
- _ts_param2(4, (0, import_common4.Inject)(import_nestjs_agent_core4.AGENT_SINK)),
3103
- _ts_param2(5, (0, import_common4.Inject)(import_nestjs_agent_core4.AGENT_DEPS_FACTORY)),
3104
- _ts_param2(6, (0, import_common4.Inject)(import_nestjs_agent_core4.AGENT_TOOL_REGISTRY)),
3103
+ _ts_param2(3, (0, import_common4.Inject)(import_nestjs_agent_core5.AGENT_STORE)),
3104
+ _ts_param2(4, (0, import_common4.Inject)(import_nestjs_agent_core5.AGENT_SINK)),
3105
+ _ts_param2(5, (0, import_common4.Inject)(import_nestjs_agent_core5.AGENT_DEPS_FACTORY)),
3106
+ _ts_param2(6, (0, import_common4.Inject)(import_nestjs_agent_core5.AGENT_TOOL_REGISTRY)),
3105
3107
  _ts_param2(7, (0, import_common4.Optional)()),
3106
- _ts_param2(7, (0, import_common4.Inject)(import_nestjs_agent_core4.AGENT_SKILLS)),
3108
+ _ts_param2(7, (0, import_common4.Inject)(import_nestjs_agent_core5.AGENT_SKILLS)),
3107
3109
  _ts_param2(8, (0, import_common4.Optional)()),
3108
- _ts_param2(8, (0, import_common4.Inject)(import_nestjs_agent_core4.AGENT_MEMORY)),
3110
+ _ts_param2(8, (0, import_common4.Inject)(import_nestjs_agent_core5.AGENT_MEMORY)),
3109
3111
  _ts_param2(9, (0, import_common4.Optional)()),
3110
3112
  _ts_param2(9, (0, import_common4.Inject)(import_nestjs_agent.AGENT_CHAT_QUEUE)),
3111
3113
  _ts_param2(10, (0, import_common4.Optional)()),
3112
3114
  _ts_param2(10, (0, import_common4.Inject)(OPENCODE_TOOLS_TOKENS)),
3113
3115
  _ts_param2(11, (0, import_common4.Optional)()),
3114
- _ts_param2(11, (0, import_common4.Inject)(import_nestjs_agent_core4.AGENT_PRICING_STORE)),
3116
+ _ts_param2(11, (0, import_common4.Inject)(import_nestjs_agent_core5.AGENT_PRICING_STORE)),
3115
3117
  _ts_param2(12, (0, import_common4.Optional)()),
3116
- _ts_param2(12, (0, import_common4.Inject)(import_nestjs_agent_core4.AGENT_OPTIONS)),
3118
+ _ts_param2(12, (0, import_common4.Inject)(import_nestjs_agent_core5.AGENT_OPTIONS)),
3117
3119
  _ts_metadata2("design:type", Function),
3118
3120
  _ts_metadata2("design:paramtypes", [
3119
3121
  typeof OpenCodeHost === "undefined" ? Object : OpenCodeHost,
@@ -3175,7 +3177,7 @@ function priceRef(model) {
3175
3177
  model.id
3176
3178
  ];
3177
3179
  const tail = model.id.slice(model.id.lastIndexOf("/") + 1);
3178
- if (tail !== model.id && (0, import_nestjs_agent_core4.parseBedrockModelId)(tail) !== void 0) aliases.push(tail);
3180
+ if (tail !== model.id && (0, import_nestjs_agent_core5.parseBedrockModelId)(tail) !== void 0) aliases.push(tail);
3179
3181
  return {
3180
3182
  modelId: `${model.providerID}/${model.id}`,
3181
3183
  provider: model.providerID,
@@ -3275,7 +3277,7 @@ var OpenCodeAgentRunner = class {
3275
3277
  ]) {
3276
3278
  if (!key.startsWith(`${runId}:`)) continue;
3277
3279
  this.pending.delete(key);
3278
- waiter.reject(new import_nestjs_agent_core5.RunCancelledError());
3280
+ waiter.reject(new import_nestjs_agent_core6.RunCancelledError());
3279
3281
  }
3280
3282
  const input = this.inputs.get(runId);
3281
3283
  if (input !== void 0) await this.turns.interrupt(input).catch(() => void 0);
@@ -3287,7 +3289,7 @@ var OpenCodeAgentRunner = class {
3287
3289
  let spent = emptyUsage();
3288
3290
  try {
3289
3291
  let handle = await this.turns.begin(runId, input);
3290
- if (this.cancelled.has(runId)) throw new import_nestjs_agent_core5.RunCancelledError();
3292
+ if (this.cancelled.has(runId)) throw new import_nestjs_agent_core6.RunCancelledError();
3291
3293
  await this.turns.prompt(runId, input, handle, spent);
3292
3294
  for (; ; ) {
3293
3295
  const milestone = await this.turns.observe(runId, input, handle, spent);
@@ -3300,7 +3302,7 @@ var OpenCodeAgentRunner = class {
3300
3302
  handle = await this.turns.reply(runId, input, handle, milestone.ask, reply, spent);
3301
3303
  }
3302
3304
  } catch (error) {
3303
- if (error instanceof import_nestjs_agent_core5.RunCancelledError) {
3305
+ if (error instanceof import_nestjs_agent_core6.RunCancelledError) {
3304
3306
  await this.turns.interrupt(input).catch(() => void 0);
3305
3307
  await this.turns.settle(runId, input, {
3306
3308
  status: "interrupted"
@@ -3428,7 +3430,7 @@ __name(openCodeProviders, "openCodeProviders");
3428
3430
 
3429
3431
  // src/durable/runner.ts
3430
3432
  var import_node_crypto3 = require("crypto");
3431
- var import_nestjs_agent_core6 = require("@dudousxd/nestjs-agent-core");
3433
+ var import_nestjs_agent_core7 = require("@dudousxd/nestjs-agent-core");
3432
3434
  var import_nestjs_durable2 = require("@dudousxd/nestjs-durable");
3433
3435
  var import_nestjs_durable_core2 = require("@dudousxd/nestjs-durable-core");
3434
3436
  var import_common8 = require("@nestjs/common");
@@ -3677,7 +3679,7 @@ DurableOpenCodeAgentRunner = _ts_decorate5([
3677
3679
  _ts_param5(1, (0, import_common8.Inject)(import_nestjs_durable2.RUN_GATEWAY)),
3678
3680
  _ts_param5(3, (0, import_common8.Inject)(OPENCODE_OPTIONS)),
3679
3681
  _ts_param5(4, (0, import_common8.Inject)(OPENCODE_HOST)),
3680
- _ts_param5(5, (0, import_common8.Inject)(import_nestjs_agent_core6.AGENT_STORE)),
3682
+ _ts_param5(5, (0, import_common8.Inject)(import_nestjs_agent_core7.AGENT_STORE)),
3681
3683
  _ts_metadata5("design:type", Function),
3682
3684
  _ts_metadata5("design:paramtypes", [
3683
3685
  typeof import_nestjs_durable2.WorkflowService === "undefined" ? Object : import_nestjs_durable2.WorkflowService,