@dudousxd/nestjs-agent-opencode 0.2.1 → 0.3.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/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { d as OpenCodeClient, e as OpenCodeEvent, f as OpenCodeForm, g as OpenCodeFormValue, h as OpenCodeFormField, i as OpenCodeMcpEndpoint, O as OpenCodeTurns, a as OpenCodeEngineSettings } from './engine-0YkBLWZR.cjs';
2
- export { I as InMemoryOpenCodeSessionStore, M as Milestone, j as OpenCodeAmendment, k as OpenCodeCallContext, c as OpenCodeEngineOptions, b as OpenCodeHost, l as OpenCodeKeyValue, m as OpenCodeModelRef, n as OpenCodePermissionRequest, o as OpenCodePermissionRule, p as OpenCodeReplyMismatchError, q as OpenCodeRunResult, r as OpenCodeServer, s as OpenCodeSessionCreate, t as OpenCodeSessionRef, u as OpenCodeSessionStore, v as OpenCodeToolCall, w as OpenCodeToolRefusedError, x as OpenCodeToolsClaims, y as OpenCodeToolsOptions, z as OpenCodeToolsTokens, A as OpenCodeTurn, B as OpenCodeTurnContext, C as OpenCodeUsage, P as PendingAsk, S as SessionHandle, D as StepCost, E as StepModel, T as TurnOutcome, F as addUsage, G as emptyUsage, H as keyValueOpenCodeSessionStore, J as openCode, K as openCodeControllers, L as openCodeProviders, N as usageOf } from './engine-0YkBLWZR.cjs';
1
+ import { d as OpenCodeClient, e as OpenCodeEvent, f as OpenCodeForm, g as OpenCodeFormValue, h as OpenCodeFormField, i as OpenCodeMcpEndpoint, O as OpenCodeTurns, a as OpenCodeEngineSettings } from './engine-Cp5uysaN.cjs';
2
+ export { I as InMemoryOpenCodeSessionStore, M as Milestone, j as OpenCodeAmendment, k as OpenCodeCallContext, c as OpenCodeEngineOptions, b as OpenCodeHost, l as OpenCodeKeyValue, m as OpenCodeModelRef, n as OpenCodePermissionRequest, o as OpenCodePermissionRule, p as OpenCodeReplyMismatchError, q as OpenCodeRunResult, r as OpenCodeServer, s as OpenCodeSessionCreate, t as OpenCodeSessionRef, u as OpenCodeSessionStore, v as OpenCodeToolCall, w as OpenCodeToolRefusedError, x as OpenCodeToolsClaims, y as OpenCodeToolsOptions, z as OpenCodeToolsTokens, A as OpenCodeTurn, B as OpenCodeTurnContext, C as OpenCodeUsage, P as PendingAsk, S as SessionHandle, D as StepCost, E as StepModel, T as TurnOutcome, F as addUsage, G as emptyUsage, H as keyValueOpenCodeSessionStore, J as openCode, K as openCodeControllers, L as openCodeProviders, N as usageOf } from './engine-Cp5uysaN.cjs';
3
3
  import { ElicitationRequest, ElicitationQuestion, AgentRunner, AgentRunInput, AgentRunStartOptions, HumanReply } from '@dudousxd/nestjs-agent-core';
4
4
  import { IncomingMessage, ServerResponse } from 'node:http';
5
5
  import '@dudousxd/nestjs-agent';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { d as OpenCodeClient, e as OpenCodeEvent, f as OpenCodeForm, g as OpenCodeFormValue, h as OpenCodeFormField, i as OpenCodeMcpEndpoint, O as OpenCodeTurns, a as OpenCodeEngineSettings } from './engine-0YkBLWZR.js';
2
- export { I as InMemoryOpenCodeSessionStore, M as Milestone, j as OpenCodeAmendment, k as OpenCodeCallContext, c as OpenCodeEngineOptions, b as OpenCodeHost, l as OpenCodeKeyValue, m as OpenCodeModelRef, n as OpenCodePermissionRequest, o as OpenCodePermissionRule, p as OpenCodeReplyMismatchError, q as OpenCodeRunResult, r as OpenCodeServer, s as OpenCodeSessionCreate, t as OpenCodeSessionRef, u as OpenCodeSessionStore, v as OpenCodeToolCall, w as OpenCodeToolRefusedError, x as OpenCodeToolsClaims, y as OpenCodeToolsOptions, z as OpenCodeToolsTokens, A as OpenCodeTurn, B as OpenCodeTurnContext, C as OpenCodeUsage, P as PendingAsk, S as SessionHandle, D as StepCost, E as StepModel, T as TurnOutcome, F as addUsage, G as emptyUsage, H as keyValueOpenCodeSessionStore, J as openCode, K as openCodeControllers, L as openCodeProviders, N as usageOf } from './engine-0YkBLWZR.js';
1
+ import { d as OpenCodeClient, e as OpenCodeEvent, f as OpenCodeForm, g as OpenCodeFormValue, h as OpenCodeFormField, i as OpenCodeMcpEndpoint, O as OpenCodeTurns, a as OpenCodeEngineSettings } from './engine-Cp5uysaN.js';
2
+ export { I as InMemoryOpenCodeSessionStore, M as Milestone, j as OpenCodeAmendment, k as OpenCodeCallContext, c as OpenCodeEngineOptions, b as OpenCodeHost, l as OpenCodeKeyValue, m as OpenCodeModelRef, n as OpenCodePermissionRequest, o as OpenCodePermissionRule, p as OpenCodeReplyMismatchError, q as OpenCodeRunResult, r as OpenCodeServer, s as OpenCodeSessionCreate, t as OpenCodeSessionRef, u as OpenCodeSessionStore, v as OpenCodeToolCall, w as OpenCodeToolRefusedError, x as OpenCodeToolsClaims, y as OpenCodeToolsOptions, z as OpenCodeToolsTokens, A as OpenCodeTurn, B as OpenCodeTurnContext, C as OpenCodeUsage, P as PendingAsk, S as SessionHandle, D as StepCost, E as StepModel, T as TurnOutcome, F as addUsage, G as emptyUsage, H as keyValueOpenCodeSessionStore, J as openCode, K as openCodeControllers, L as openCodeProviders, N as usageOf } from './engine-Cp5uysaN.js';
3
3
  import { ElicitationRequest, ElicitationQuestion, AgentRunner, AgentRunInput, AgentRunStartOptions, HumanReply } from '@dudousxd/nestjs-agent-core';
4
4
  import { IncomingMessage, ServerResponse } from 'node:http';
5
5
  import '@dudousxd/nestjs-agent';
package/dist/index.js CHANGED
@@ -150,7 +150,7 @@ import { toJsonSchemaCompat } from "@modelcontextprotocol/sdk/server/zod-json-sc
150
150
  import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
151
151
 
152
152
  // src/turn.ts
153
- import { encodeStreamEvent, settleElicitation } from "@dudousxd/nestjs-agent-core";
153
+ import { encodeStreamEvent, resolveToolConfirmation, settleElicitation } from "@dudousxd/nestjs-agent-core";
154
154
  import { ConflictException } from "@nestjs/common";
155
155
 
156
156
  // src/forms.ts
@@ -1020,6 +1020,8 @@ ${delta}` : delta;
1020
1020
  }
1021
1021
  const ttlMs = requirement.ttlMs !== void 0 && Number.isFinite(requirement.ttlMs) && requirement.ttlMs > 0 ? Math.floor(requirement.ttlMs) : void 0;
1022
1022
  const expiresAt = ttlMs !== void 0 ? new Date(Date.now() + ttlMs).toISOString() : void 0;
1023
+ const tool = this.a.approvalPresentation?.(action);
1024
+ const confirmation = tool !== void 0 ? resolveToolConfirmation(tool.name, args, tool.presentation) : void 0;
1023
1025
  this.segment.calls.push({
1024
1026
  id: req.id,
1025
1027
  name: action,
@@ -1034,6 +1036,9 @@ ${delta}` : delta;
1034
1036
  toolType: "action",
1035
1037
  input: args,
1036
1038
  status: "pending_approval",
1039
+ ...confirmation !== void 0 ? {
1040
+ confirmation
1041
+ } : {},
1037
1042
  runId: this.a.runId,
1038
1043
  approver: requirement.approver,
1039
1044
  ...expiresAt !== void 0 ? {
@@ -1051,6 +1056,9 @@ ${delta}` : delta;
1051
1056
  kind: "approval-requested",
1052
1057
  id: req.id,
1053
1058
  approver: requirement.approver,
1059
+ ...confirmation !== void 0 ? {
1060
+ confirmation
1061
+ } : {},
1054
1062
  ...expiresAt !== void 0 ? {
1055
1063
  expiresAt
1056
1064
  } : {}
@@ -1831,6 +1839,25 @@ var OpenCodeTurns = class {
1831
1839
  get toolsServer() {
1832
1840
  return this.settings.tools?.server ?? "aviary";
1833
1841
  }
1842
+ /** The app tool an OpenCode permission `action` names, and its presentation — `undefined` for a built-in. */
1843
+ presentationOf(action) {
1844
+ if (this.settings.tools === void 0) return void 0;
1845
+ const server = this.toolsServer;
1846
+ for (const prefix of [
1847
+ `${server}.`,
1848
+ `${server}_`
1849
+ ]) {
1850
+ if (!action.startsWith(prefix)) continue;
1851
+ const spec = this.registry.spec(action.slice(prefix.length));
1852
+ if (spec !== void 0) return {
1853
+ name: spec.name,
1854
+ ...spec.presentation !== void 0 ? {
1855
+ presentation: spec.presentation
1856
+ } : {}
1857
+ };
1858
+ }
1859
+ return void 0;
1860
+ }
1834
1861
  /** The roles policy a turn's tools are gated by (the agent's own). */
1835
1862
  rolesPolicyFor(input) {
1836
1863
  return this.deps.forAgent(input.agentName).rolesPolicy;
@@ -2563,6 +2590,9 @@ ${body}
2563
2590
  agentName: input.agentName
2564
2591
  } : {}
2565
2592
  }), "approvalFor"),
2593
+ // An app tool reaches OpenCode as `<server>.<name>` / `<server>_<name>`: its own presentation
2594
+ // words the approval card. OpenCode's built-ins (`bash`, `edit`) have none.
2595
+ approvalPresentation: /* @__PURE__ */ __name((action) => this.presentationOf(action), "approvalPresentation"),
2566
2596
  modelLabel: input.model ?? "opencode",
2567
2597
  priceStep: /* @__PURE__ */ __name((step) => this.priceStep(step), "priceStep"),
2568
2598
  ...spent !== void 0 ? {