@finalai/final-agent-provider 0.17.0 → 0.17.1
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/modules/harnesses/final.mjs +3 -2
- package/dist/modules/harnesses/final.mjs.map +2 -2
- package/dist/modules/harnesses/nanocode-claude.mjs +4 -3
- package/dist/modules/harnesses/nanocode-claude.mjs.map +2 -2
- package/dist/modules/harnesses/nanocode-codex.mjs +4 -3
- package/dist/modules/harnesses/nanocode-codex.mjs.map +2 -2
- package/dist/modules/harnesses/pi.mjs +4 -3
- package/dist/modules/harnesses/pi.mjs.map +2 -2
- package/package.json +1 -1
|
@@ -54,9 +54,10 @@ const FINAL_HARNESS = defineHarness({
|
|
|
54
54
|
mcp: [McpTransportKind.Acp, McpTransportKind.Http],
|
|
55
55
|
consumes: [SandboxWire.HandleRpc],
|
|
56
56
|
supports: { observe: true, resumeReplay: true, authorMeta: true },
|
|
57
|
-
// Same engine as Pi:
|
|
57
|
+
// Same engine as Pi: a lost invocation resumes its turn from durable storage
|
|
58
|
+
// and raises open asks again under their session-unique ids.
|
|
58
59
|
promptWhileRunning: PromptWhileRunning.Inject,
|
|
59
|
-
sessionSurvivesDisconnect:
|
|
60
|
+
sessionSurvivesDisconnect: true
|
|
60
61
|
});
|
|
61
62
|
const serverlessFinal = ({
|
|
62
63
|
environment,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/harnesses/final.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineHarness } from '@finalai/agent-definition/authoring';\nimport {\n CredentialDelivery,\n HarnessFeature,\n HarnessService,\n InferenceSourceKind,\n McpTransportKind,\n PermissionLevel,\n PromptWhileRunning,\n SandboxWire,\n type HarnessDefinitionIface,\n type HarnessEnvironmentIface,\n type HarnessSettingsIface,\n} from '@finalai/agent-provider';\nimport {\n configObjectJson,\n harnessSettings,\n inferenceJson,\n modelJson,\n permissionModeJson,\n reasoningJson,\n ReasoningLevel,\n type InferenceInput,\n type PermissionInput,\n} from \"./config-fields.mjs\";\nimport { ModelVendor } from \"./model-reference.mjs\";\nimport { FinalAcpAdapter, FinalHarness, FinalHarnessInterface, FinalWorkerProgram } from \"./names.mjs\";\n\n// The Final harness: Final's own Pi-derived loop (the one Home runs on), a\n// worker program behind the same adapter as Pi. It differs from Pi in its\n// program and model catalog.\n\nexport const FINAL_REASONING_LEVELS = [\n ReasoningLevel.Low,\n ReasoningLevel.Medium,\n ReasoningLevel.High,\n] as const;\n\nexport const FINAL_HARNESS: HarnessDefinitionIface = defineHarness({\n title: 'Final',\n description: \"Final's own agent loop, run per session on a worker runtime.\",\n configurationSchema: configObjectJson({\n required: ['model'],\n title: 'Final',\n properties: {\n model: modelJson(),\n reasoning: reasoningJson(FINAL_REASONING_LEVELS),\n inference: inferenceJson(),\n permissionMode: permissionModeJson(),\n },\n }),\n features: Object.values(HarnessFeature),\n lowestPermission: PermissionLevel.Ask,\n // Final's catalog through its metered inference, or a project's own\n // OpenRouter-compatible key.\n inference: {\n vendors: [ModelVendor.OpenRouter],\n kinds: [InferenceSourceKind.ApiKey, InferenceSourceKind.Final],\n delivery: CredentialDelivery.PerRequest,\n },\n interface: FinalHarnessInterface.PiAgent,\n adapter: FinalAcpAdapter.Pi,\n run: { worker: { program: FinalWorkerProgram.Final } },\n services: [HarnessService.FrameAttachments],\n mcp: [McpTransportKind.Acp, McpTransportKind.Http],\n consumes: [SandboxWire.HandleRpc],\n supports: { observe: true, resumeReplay: true, authorMeta: true },\n // Same engine as Pi: open asks
|
|
5
|
-
"mappings": "AAAA,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,cAAc,uBAAuB,0BAA0B;AAMlF,MAAM,yBAAyB;AAAA,EACpC,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;AAEO,MAAM,gBAAwC,cAAc;AAAA,EACjE,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB,iBAAiB;AAAA,IACpC,UAAU,CAAC,OAAO;AAAA,IAClB,OAAO;AAAA,IACP,YAAY;AAAA,MACV,OAAO,UAAU;AAAA,MACjB,WAAW,cAAc,sBAAsB;AAAA,MAC/C,WAAW,cAAc;AAAA,MACzB,gBAAgB,mBAAmB;AAAA,IACrC;AAAA,EACF,CAAC;AAAA,EACD,UAAU,OAAO,OAAO,cAAc;AAAA,EACtC,kBAAkB,gBAAgB;AAAA;AAAA;AAAA,EAGlC,WAAW;AAAA,IACT,SAAS,CAAC,YAAY,UAAU;AAAA,IAChC,OAAO,CAAC,oBAAoB,QAAQ,oBAAoB,KAAK;AAAA,IAC7D,UAAU,mBAAmB;AAAA,EAC/B;AAAA,EACA,WAAW,sBAAsB;AAAA,EACjC,SAAS,gBAAgB;AAAA,EACzB,KAAK,EAAE,QAAQ,EAAE,SAAS,mBAAmB,MAAM,EAAE;AAAA,EACrD,UAAU,CAAC,eAAe,gBAAgB;AAAA,EAC1C,KAAK,CAAC,iBAAiB,KAAK,iBAAiB,IAAI;AAAA,EACjD,UAAU,CAAC,YAAY,SAAS;AAAA,EAChC,UAAU,EAAE,SAAS,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA;AAAA,
|
|
4
|
+
"sourcesContent": ["import { defineHarness } from '@finalai/agent-definition/authoring';\nimport {\n CredentialDelivery,\n HarnessFeature,\n HarnessService,\n InferenceSourceKind,\n McpTransportKind,\n PermissionLevel,\n PromptWhileRunning,\n SandboxWire,\n type HarnessDefinitionIface,\n type HarnessEnvironmentIface,\n type HarnessSettingsIface,\n} from '@finalai/agent-provider';\nimport {\n configObjectJson,\n harnessSettings,\n inferenceJson,\n modelJson,\n permissionModeJson,\n reasoningJson,\n ReasoningLevel,\n type InferenceInput,\n type PermissionInput,\n} from \"./config-fields.mjs\";\nimport { ModelVendor } from \"./model-reference.mjs\";\nimport { FinalAcpAdapter, FinalHarness, FinalHarnessInterface, FinalWorkerProgram } from \"./names.mjs\";\n\n// The Final harness: Final's own Pi-derived loop (the one Home runs on), a\n// worker program behind the same adapter as Pi. It differs from Pi in its\n// program and model catalog.\n\nexport const FINAL_REASONING_LEVELS = [\n ReasoningLevel.Low,\n ReasoningLevel.Medium,\n ReasoningLevel.High,\n] as const;\n\nexport const FINAL_HARNESS: HarnessDefinitionIface = defineHarness({\n title: 'Final',\n description: \"Final's own agent loop, run per session on a worker runtime.\",\n configurationSchema: configObjectJson({\n required: ['model'],\n title: 'Final',\n properties: {\n model: modelJson(),\n reasoning: reasoningJson(FINAL_REASONING_LEVELS),\n inference: inferenceJson(),\n permissionMode: permissionModeJson(),\n },\n }),\n features: Object.values(HarnessFeature),\n lowestPermission: PermissionLevel.Ask,\n // Final's catalog through its metered inference, or a project's own\n // OpenRouter-compatible key.\n inference: {\n vendors: [ModelVendor.OpenRouter],\n kinds: [InferenceSourceKind.ApiKey, InferenceSourceKind.Final],\n delivery: CredentialDelivery.PerRequest,\n },\n interface: FinalHarnessInterface.PiAgent,\n adapter: FinalAcpAdapter.Pi,\n run: { worker: { program: FinalWorkerProgram.Final } },\n services: [HarnessService.FrameAttachments],\n mcp: [McpTransportKind.Acp, McpTransportKind.Http],\n consumes: [SandboxWire.HandleRpc],\n supports: { observe: true, resumeReplay: true, authorMeta: true },\n // Same engine as Pi: a lost invocation resumes its turn from durable storage\n // and raises open asks again under their session-unique ids.\n promptWhileRunning: PromptWhileRunning.Inject,\n sessionSurvivesDisconnect: true,\n});\n\nexport interface ServerlessFinalInputIface {\n model: string;\n reasoning?:\n | (typeof FINAL_REASONING_LEVELS)[number]\n | `${(typeof FINAL_REASONING_LEVELS)[number]}`;\n inference?: InferenceInput;\n permissionMode?: PermissionInput;\n // The worker-runtime sandbox it runs in; absent: the caller's plan creates one.\n environment?: HarnessEnvironmentIface;\n}\n\nexport const serverlessFinal = ({\n environment,\n ...configuration\n}: ServerlessFinalInputIface): HarnessSettingsIface =>\n harnessSettings({ harness: FinalHarness.Final, configuration, environment });\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,cAAc,uBAAuB,0BAA0B;AAMlF,MAAM,yBAAyB;AAAA,EACpC,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;AAEO,MAAM,gBAAwC,cAAc;AAAA,EACjE,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB,iBAAiB;AAAA,IACpC,UAAU,CAAC,OAAO;AAAA,IAClB,OAAO;AAAA,IACP,YAAY;AAAA,MACV,OAAO,UAAU;AAAA,MACjB,WAAW,cAAc,sBAAsB;AAAA,MAC/C,WAAW,cAAc;AAAA,MACzB,gBAAgB,mBAAmB;AAAA,IACrC;AAAA,EACF,CAAC;AAAA,EACD,UAAU,OAAO,OAAO,cAAc;AAAA,EACtC,kBAAkB,gBAAgB;AAAA;AAAA;AAAA,EAGlC,WAAW;AAAA,IACT,SAAS,CAAC,YAAY,UAAU;AAAA,IAChC,OAAO,CAAC,oBAAoB,QAAQ,oBAAoB,KAAK;AAAA,IAC7D,UAAU,mBAAmB;AAAA,EAC/B;AAAA,EACA,WAAW,sBAAsB;AAAA,EACjC,SAAS,gBAAgB;AAAA,EACzB,KAAK,EAAE,QAAQ,EAAE,SAAS,mBAAmB,MAAM,EAAE;AAAA,EACrD,UAAU,CAAC,eAAe,gBAAgB;AAAA,EAC1C,KAAK,CAAC,iBAAiB,KAAK,iBAAiB,IAAI;AAAA,EACjD,UAAU,CAAC,YAAY,SAAS;AAAA,EAChC,UAAU,EAAE,SAAS,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA;AAAA;AAAA,EAGhE,oBAAoB,mBAAmB;AAAA,EACvC,2BAA2B;AAC7B,CAAC;AAaM,MAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,MACE,gBAAgB,EAAE,SAAS,aAAa,OAAO,eAAe,YAAY,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -82,10 +82,11 @@ const NANOCODE_CLAUDE_HARNESS = defineHarness({
|
|
|
82
82
|
mcp: [McpTransportKind.Acp, McpTransportKind.Http],
|
|
83
83
|
consumes: [SandboxWire.HandleRpc],
|
|
84
84
|
supports: { observe: true, resumeReplay: true, authorMeta: true },
|
|
85
|
-
// A prompt that arrives while a turn runs waits for it.
|
|
86
|
-
//
|
|
85
|
+
// A prompt that arrives while a turn runs waits for it. A lost invocation
|
|
86
|
+
// resumes its running turn by id; an interrupted call's ask is not raised
|
|
87
|
+
// again, and the session service releases it at the next idle.
|
|
87
88
|
promptWhileRunning: PromptWhileRunning.Queue,
|
|
88
|
-
sessionSurvivesDisconnect:
|
|
89
|
+
sessionSurvivesDisconnect: true
|
|
89
90
|
});
|
|
90
91
|
const serverlessNanocodeClaude = ({
|
|
91
92
|
environment,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/harnesses/nanocode-claude.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineHarness } from '@finalai/agent-definition/authoring';\nimport {\n CredentialDelivery,\n HarnessFeature,\n HarnessService,\n InferenceSourceKind,\n McpTransportKind,\n PermissionLevel,\n PromptWhileRunning,\n SandboxWire,\n type HarnessDefinitionIface,\n type HarnessEnvironmentIface,\n type HarnessSettingsIface,\n type JsonSchema,\n} from '@finalai/agent-provider';\nimport {\n ApprovalsReviewer,\n approvalsReviewerJson,\n configObjectJson,\n harnessSettings,\n inferenceJson,\n modelJson,\n permissionModeJson,\n reasoningJson,\n ReasoningLevel,\n type InferenceInput,\n type PermissionInput,\n} from \"./config-fields.mjs\";\nimport { ModelVendor } from \"./model-reference.mjs\";\nimport { FinalAcpAdapter, FinalHarness, FinalHarnessInterface, FinalWorkerProgram } from \"./names.mjs\";\n\n// nanocode's Claude engine as a worker program. It drives the sandboxes\n// provided for `files` and `shell` with its own tools (Read, Write, Bash,\n// BashOutput).\n\nexport const CLAUDE_REASONING_LEVELS = [\n ReasoningLevel.Low,\n ReasoningLevel.Medium,\n ReasoningLevel.High,\n ReasoningLevel.Max,\n] as const;\n\n// A reviewer model answering approvals means no person is asked, so it needs\n// a mode that does not promise one: no auto-review, or review or auto.\nexport const AUTO_REVIEW_NEEDS_UNATTENDED_MODE: JsonSchema = {\n anyOf: [\n {\n not: {\n required: ['approvalsReviewer'],\n properties: { approvalsReviewer: { const: ApprovalsReviewer.AutoReview } },\n },\n },\n {\n required: ['permissionMode'],\n properties: { permissionMode: { enum: [PermissionLevel.Review, PermissionLevel.Auto] } },\n },\n ],\n};\n\nexport const nanocodeConfigurationJson = (args: {\n title: string;\n reasoning: readonly ReasoningLevel[];\n}): JsonSchema => ({\n ...configObjectJson({\n required: ['model'],\n title: args.title,\n properties: {\n model: modelJson(),\n reasoning: reasoningJson(args.reasoning),\n inference: inferenceJson(),\n permissionMode: permissionModeJson(),\n approvalsReviewer: approvalsReviewerJson(),\n },\n }),\n allOf: [AUTO_REVIEW_NEEDS_UNATTENDED_MODE],\n});\n\nexport const NANOCODE_CLAUDE_HARNESS: HarnessDefinitionIface = defineHarness({\n title: 'Claude on nanocode',\n description: \"nanocode's Claude engine, run per session on a worker runtime.\",\n configurationSchema: nanocodeConfigurationJson({\n title: 'Claude on nanocode',\n reasoning: CLAUDE_REASONING_LEVELS,\n }),\n features: Object.values(HarnessFeature),\n lowestPermission: PermissionLevel.Ask,\n // Subscriptions are the Claude setup token, used as a bearer.\n inference: {\n vendors: [ModelVendor.Anthropic],\n kinds: [\n InferenceSourceKind.Subscription,\n InferenceSourceKind.ApiKey,\n InferenceSourceKind.Final,\n ],\n delivery: CredentialDelivery.PerRequest,\n },\n interface: FinalHarnessInterface.Nanocode,\n adapter: FinalAcpAdapter.Nanocode,\n run: { worker: { program: FinalWorkerProgram.NanocodeClaude } },\n services: [HarnessService.SessionStore, HarnessService.FrameAttachments],\n mcp: [McpTransportKind.Acp, McpTransportKind.Http],\n consumes: [SandboxWire.HandleRpc],\n supports: { observe: true, resumeReplay: true, authorMeta: true },\n // A prompt that arrives while a turn runs waits for it.
|
|
5
|
-
"mappings": "AAAA,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,cAAc,uBAAuB,0BAA0B;AAMlF,MAAM,0BAA0B;AAAA,EACrC,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;AAIO,MAAM,oCAAgD;AAAA,EAC3D,OAAO;AAAA,IACL;AAAA,MACE,KAAK;AAAA,QACH,UAAU,CAAC,mBAAmB;AAAA,QAC9B,YAAY,EAAE,mBAAmB,EAAE,OAAO,kBAAkB,WAAW,EAAE;AAAA,MAC3E;AAAA,IACF;AAAA,IACA;AAAA,MACE,UAAU,CAAC,gBAAgB;AAAA,MAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,QAAQ,gBAAgB,IAAI,EAAE,EAAE;AAAA,IACzF;AAAA,EACF;AACF;AAEO,MAAM,4BAA4B,CAAC,UAGvB;AAAA,EACjB,GAAG,iBAAiB;AAAA,IAClB,UAAU,CAAC,OAAO;AAAA,IAClB,OAAO,KAAK;AAAA,IACZ,YAAY;AAAA,MACV,OAAO,UAAU;AAAA,MACjB,WAAW,cAAc,KAAK,SAAS;AAAA,MACvC,WAAW,cAAc;AAAA,MACzB,gBAAgB,mBAAmB;AAAA,MACnC,mBAAmB,sBAAsB;AAAA,IAC3C;AAAA,EACF,CAAC;AAAA,EACD,OAAO,CAAC,iCAAiC;AAC3C;AAEO,MAAM,0BAAkD,cAAc;AAAA,EAC3E,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB,0BAA0B;AAAA,IAC7C,OAAO;AAAA,IACP,WAAW;AAAA,EACb,CAAC;AAAA,EACD,UAAU,OAAO,OAAO,cAAc;AAAA,EACtC,kBAAkB,gBAAgB;AAAA;AAAA,EAElC,WAAW;AAAA,IACT,SAAS,CAAC,YAAY,SAAS;AAAA,IAC/B,OAAO;AAAA,MACL,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,IACtB;AAAA,IACA,UAAU,mBAAmB;AAAA,EAC/B;AAAA,EACA,WAAW,sBAAsB;AAAA,EACjC,SAAS,gBAAgB;AAAA,EACzB,KAAK,EAAE,QAAQ,EAAE,SAAS,mBAAmB,eAAe,EAAE;AAAA,EAC9D,UAAU,CAAC,eAAe,cAAc,eAAe,gBAAgB;AAAA,EACvE,KAAK,CAAC,iBAAiB,KAAK,iBAAiB,IAAI;AAAA,EACjD,UAAU,CAAC,YAAY,SAAS;AAAA,EAChC,UAAU,EAAE,SAAS,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA;AAAA;AAAA,
|
|
4
|
+
"sourcesContent": ["import { defineHarness } from '@finalai/agent-definition/authoring';\nimport {\n CredentialDelivery,\n HarnessFeature,\n HarnessService,\n InferenceSourceKind,\n McpTransportKind,\n PermissionLevel,\n PromptWhileRunning,\n SandboxWire,\n type HarnessDefinitionIface,\n type HarnessEnvironmentIface,\n type HarnessSettingsIface,\n type JsonSchema,\n} from '@finalai/agent-provider';\nimport {\n ApprovalsReviewer,\n approvalsReviewerJson,\n configObjectJson,\n harnessSettings,\n inferenceJson,\n modelJson,\n permissionModeJson,\n reasoningJson,\n ReasoningLevel,\n type InferenceInput,\n type PermissionInput,\n} from \"./config-fields.mjs\";\nimport { ModelVendor } from \"./model-reference.mjs\";\nimport { FinalAcpAdapter, FinalHarness, FinalHarnessInterface, FinalWorkerProgram } from \"./names.mjs\";\n\n// nanocode's Claude engine as a worker program. It drives the sandboxes\n// provided for `files` and `shell` with its own tools (Read, Write, Bash,\n// BashOutput).\n\nexport const CLAUDE_REASONING_LEVELS = [\n ReasoningLevel.Low,\n ReasoningLevel.Medium,\n ReasoningLevel.High,\n ReasoningLevel.Max,\n] as const;\n\n// A reviewer model answering approvals means no person is asked, so it needs\n// a mode that does not promise one: no auto-review, or review or auto.\nexport const AUTO_REVIEW_NEEDS_UNATTENDED_MODE: JsonSchema = {\n anyOf: [\n {\n not: {\n required: ['approvalsReviewer'],\n properties: { approvalsReviewer: { const: ApprovalsReviewer.AutoReview } },\n },\n },\n {\n required: ['permissionMode'],\n properties: { permissionMode: { enum: [PermissionLevel.Review, PermissionLevel.Auto] } },\n },\n ],\n};\n\nexport const nanocodeConfigurationJson = (args: {\n title: string;\n reasoning: readonly ReasoningLevel[];\n}): JsonSchema => ({\n ...configObjectJson({\n required: ['model'],\n title: args.title,\n properties: {\n model: modelJson(),\n reasoning: reasoningJson(args.reasoning),\n inference: inferenceJson(),\n permissionMode: permissionModeJson(),\n approvalsReviewer: approvalsReviewerJson(),\n },\n }),\n allOf: [AUTO_REVIEW_NEEDS_UNATTENDED_MODE],\n});\n\nexport const NANOCODE_CLAUDE_HARNESS: HarnessDefinitionIface = defineHarness({\n title: 'Claude on nanocode',\n description: \"nanocode's Claude engine, run per session on a worker runtime.\",\n configurationSchema: nanocodeConfigurationJson({\n title: 'Claude on nanocode',\n reasoning: CLAUDE_REASONING_LEVELS,\n }),\n features: Object.values(HarnessFeature),\n lowestPermission: PermissionLevel.Ask,\n // Subscriptions are the Claude setup token, used as a bearer.\n inference: {\n vendors: [ModelVendor.Anthropic],\n kinds: [\n InferenceSourceKind.Subscription,\n InferenceSourceKind.ApiKey,\n InferenceSourceKind.Final,\n ],\n delivery: CredentialDelivery.PerRequest,\n },\n interface: FinalHarnessInterface.Nanocode,\n adapter: FinalAcpAdapter.Nanocode,\n run: { worker: { program: FinalWorkerProgram.NanocodeClaude } },\n services: [HarnessService.SessionStore, HarnessService.FrameAttachments],\n mcp: [McpTransportKind.Acp, McpTransportKind.Http],\n consumes: [SandboxWire.HandleRpc],\n supports: { observe: true, resumeReplay: true, authorMeta: true },\n // A prompt that arrives while a turn runs waits for it. A lost invocation\n // resumes its running turn by id; an interrupted call's ask is not raised\n // again, and the session service releases it at the next idle.\n promptWhileRunning: PromptWhileRunning.Queue,\n sessionSurvivesDisconnect: true,\n});\n\nexport interface ServerlessNanocodeClaudeInputIface {\n model: string;\n reasoning?:\n | (typeof CLAUDE_REASONING_LEVELS)[number]\n | `${(typeof CLAUDE_REASONING_LEVELS)[number]}`;\n inference?: InferenceInput;\n permissionMode?: PermissionInput;\n approvalsReviewer?: ApprovalsReviewer | `${ApprovalsReviewer}`;\n // The worker-runtime sandbox it runs in; absent: the caller's plan creates one.\n environment?: HarnessEnvironmentIface;\n}\n\nexport const serverlessNanocodeClaude = ({\n environment,\n ...configuration\n}: ServerlessNanocodeClaudeInputIface): HarnessSettingsIface =>\n harnessSettings({ harness: FinalHarness.NanocodeClaude, configuration, environment });\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,cAAc,uBAAuB,0BAA0B;AAMlF,MAAM,0BAA0B;AAAA,EACrC,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;AAIO,MAAM,oCAAgD;AAAA,EAC3D,OAAO;AAAA,IACL;AAAA,MACE,KAAK;AAAA,QACH,UAAU,CAAC,mBAAmB;AAAA,QAC9B,YAAY,EAAE,mBAAmB,EAAE,OAAO,kBAAkB,WAAW,EAAE;AAAA,MAC3E;AAAA,IACF;AAAA,IACA;AAAA,MACE,UAAU,CAAC,gBAAgB;AAAA,MAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,QAAQ,gBAAgB,IAAI,EAAE,EAAE;AAAA,IACzF;AAAA,EACF;AACF;AAEO,MAAM,4BAA4B,CAAC,UAGvB;AAAA,EACjB,GAAG,iBAAiB;AAAA,IAClB,UAAU,CAAC,OAAO;AAAA,IAClB,OAAO,KAAK;AAAA,IACZ,YAAY;AAAA,MACV,OAAO,UAAU;AAAA,MACjB,WAAW,cAAc,KAAK,SAAS;AAAA,MACvC,WAAW,cAAc;AAAA,MACzB,gBAAgB,mBAAmB;AAAA,MACnC,mBAAmB,sBAAsB;AAAA,IAC3C;AAAA,EACF,CAAC;AAAA,EACD,OAAO,CAAC,iCAAiC;AAC3C;AAEO,MAAM,0BAAkD,cAAc;AAAA,EAC3E,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB,0BAA0B;AAAA,IAC7C,OAAO;AAAA,IACP,WAAW;AAAA,EACb,CAAC;AAAA,EACD,UAAU,OAAO,OAAO,cAAc;AAAA,EACtC,kBAAkB,gBAAgB;AAAA;AAAA,EAElC,WAAW;AAAA,IACT,SAAS,CAAC,YAAY,SAAS;AAAA,IAC/B,OAAO;AAAA,MACL,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,IACtB;AAAA,IACA,UAAU,mBAAmB;AAAA,EAC/B;AAAA,EACA,WAAW,sBAAsB;AAAA,EACjC,SAAS,gBAAgB;AAAA,EACzB,KAAK,EAAE,QAAQ,EAAE,SAAS,mBAAmB,eAAe,EAAE;AAAA,EAC9D,UAAU,CAAC,eAAe,cAAc,eAAe,gBAAgB;AAAA,EACvE,KAAK,CAAC,iBAAiB,KAAK,iBAAiB,IAAI;AAAA,EACjD,UAAU,CAAC,YAAY,SAAS;AAAA,EAChC,UAAU,EAAE,SAAS,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA,EAIhE,oBAAoB,mBAAmB;AAAA,EACvC,2BAA2B;AAC7B,CAAC;AAcM,MAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,EACA,GAAG;AACL,MACE,gBAAgB,EAAE,SAAS,aAAa,gBAAgB,eAAe,YAAY,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -47,10 +47,11 @@ const NANOCODE_CODEX_HARNESS = defineHarness({
|
|
|
47
47
|
mcp: [McpTransportKind.Acp, McpTransportKind.Http],
|
|
48
48
|
consumes: [SandboxWire.HandleRpc],
|
|
49
49
|
supports: { observe: true, resumeReplay: true, authorMeta: true },
|
|
50
|
-
// A prompt that arrives while a turn runs steers into it
|
|
51
|
-
//
|
|
50
|
+
// A prompt that arrives while a turn runs steers into it. A lost invocation
|
|
51
|
+
// resumes its running turn by id; an interrupted call's ask is not raised
|
|
52
|
+
// again, and the session service releases it at the next idle.
|
|
52
53
|
promptWhileRunning: PromptWhileRunning.Inject,
|
|
53
|
-
sessionSurvivesDisconnect:
|
|
54
|
+
sessionSurvivesDisconnect: true
|
|
54
55
|
});
|
|
55
56
|
const serverlessNanocodeCodex = ({
|
|
56
57
|
environment,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/harnesses/nanocode-codex.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineHarness } from '@finalai/agent-definition/authoring';\nimport {\n CredentialDelivery,\n HarnessFeature,\n HarnessService,\n InferenceSourceKind,\n McpTransportKind,\n PermissionLevel,\n PromptWhileRunning,\n SandboxWire,\n type HarnessDefinitionIface,\n type HarnessEnvironmentIface,\n type HarnessSettingsIface,\n} from '@finalai/agent-provider';\nimport {\n ReasoningLevel,\n harnessSettings,\n type ApprovalsReviewer,\n type InferenceInput,\n type PermissionInput,\n} from \"./config-fields.mjs\";\nimport { ModelVendor } from \"./model-reference.mjs\";\nimport { FinalAcpAdapter, FinalHarness, FinalHarnessInterface, FinalWorkerProgram } from \"./names.mjs\";\nimport { nanocodeConfigurationJson } from \"./nanocode-claude.mjs\";\n\n// nanocode's Codex engine as a worker program, Responses Lite models only. It\n// drives the sandboxes provided for `files` and `shell` with its own tools\n// (apply_patch, view_image, exec_command, write_stdin).\n\n// The final://schemas/reasoning fragment has no xhigh/ultra yet; nanocode's\n// policies accept the rest.\nexport const CODEX_REASONING_LEVELS = [\n ReasoningLevel.Low,\n ReasoningLevel.Medium,\n ReasoningLevel.High,\n ReasoningLevel.Max,\n] as const;\n\nexport const NANOCODE_CODEX_HARNESS: HarnessDefinitionIface = defineHarness({\n title: 'Codex on nanocode',\n description: \"nanocode's Codex engine, run per session on a worker runtime.\",\n configurationSchema: nanocodeConfigurationJson({\n title: 'Codex on nanocode',\n reasoning: CODEX_REASONING_LEVELS,\n }),\n features: Object.values(HarnessFeature),\n lowestPermission: PermissionLevel.Ask,\n inference: {\n vendors: [ModelVendor.OpenAI],\n kinds: [\n InferenceSourceKind.Subscription,\n InferenceSourceKind.ApiKey,\n InferenceSourceKind.Final,\n ],\n delivery: CredentialDelivery.PerRequest,\n },\n interface: FinalHarnessInterface.Nanocode,\n adapter: FinalAcpAdapter.Nanocode,\n run: { worker: { program: FinalWorkerProgram.NanocodeCodex } },\n services: [HarnessService.FrameAttachments, HarnessService.SubscriptionRelay],\n mcp: [McpTransportKind.Acp, McpTransportKind.Http],\n consumes: [SandboxWire.HandleRpc],\n supports: { observe: true, resumeReplay: true, authorMeta: true },\n // A prompt that arrives while a turn runs steers into it
|
|
5
|
-
"mappings": "AAAA,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAIK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,cAAc,uBAAuB,0BAA0B;AACzF,SAAS,iCAAiC;AAQnC,MAAM,yBAAyB;AAAA,EACpC,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;AAEO,MAAM,yBAAiD,cAAc;AAAA,EAC1E,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB,0BAA0B;AAAA,IAC7C,OAAO;AAAA,IACP,WAAW;AAAA,EACb,CAAC;AAAA,EACD,UAAU,OAAO,OAAO,cAAc;AAAA,EACtC,kBAAkB,gBAAgB;AAAA,EAClC,WAAW;AAAA,IACT,SAAS,CAAC,YAAY,MAAM;AAAA,IAC5B,OAAO;AAAA,MACL,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,IACtB;AAAA,IACA,UAAU,mBAAmB;AAAA,EAC/B;AAAA,EACA,WAAW,sBAAsB;AAAA,EACjC,SAAS,gBAAgB;AAAA,EACzB,KAAK,EAAE,QAAQ,EAAE,SAAS,mBAAmB,cAAc,EAAE;AAAA,EAC7D,UAAU,CAAC,eAAe,kBAAkB,eAAe,iBAAiB;AAAA,EAC5E,KAAK,CAAC,iBAAiB,KAAK,iBAAiB,IAAI;AAAA,EACjD,UAAU,CAAC,YAAY,SAAS;AAAA,EAChC,UAAU,EAAE,SAAS,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA;AAAA;AAAA,
|
|
4
|
+
"sourcesContent": ["import { defineHarness } from '@finalai/agent-definition/authoring';\nimport {\n CredentialDelivery,\n HarnessFeature,\n HarnessService,\n InferenceSourceKind,\n McpTransportKind,\n PermissionLevel,\n PromptWhileRunning,\n SandboxWire,\n type HarnessDefinitionIface,\n type HarnessEnvironmentIface,\n type HarnessSettingsIface,\n} from '@finalai/agent-provider';\nimport {\n ReasoningLevel,\n harnessSettings,\n type ApprovalsReviewer,\n type InferenceInput,\n type PermissionInput,\n} from \"./config-fields.mjs\";\nimport { ModelVendor } from \"./model-reference.mjs\";\nimport { FinalAcpAdapter, FinalHarness, FinalHarnessInterface, FinalWorkerProgram } from \"./names.mjs\";\nimport { nanocodeConfigurationJson } from \"./nanocode-claude.mjs\";\n\n// nanocode's Codex engine as a worker program, Responses Lite models only. It\n// drives the sandboxes provided for `files` and `shell` with its own tools\n// (apply_patch, view_image, exec_command, write_stdin).\n\n// The final://schemas/reasoning fragment has no xhigh/ultra yet; nanocode's\n// policies accept the rest.\nexport const CODEX_REASONING_LEVELS = [\n ReasoningLevel.Low,\n ReasoningLevel.Medium,\n ReasoningLevel.High,\n ReasoningLevel.Max,\n] as const;\n\nexport const NANOCODE_CODEX_HARNESS: HarnessDefinitionIface = defineHarness({\n title: 'Codex on nanocode',\n description: \"nanocode's Codex engine, run per session on a worker runtime.\",\n configurationSchema: nanocodeConfigurationJson({\n title: 'Codex on nanocode',\n reasoning: CODEX_REASONING_LEVELS,\n }),\n features: Object.values(HarnessFeature),\n lowestPermission: PermissionLevel.Ask,\n inference: {\n vendors: [ModelVendor.OpenAI],\n kinds: [\n InferenceSourceKind.Subscription,\n InferenceSourceKind.ApiKey,\n InferenceSourceKind.Final,\n ],\n delivery: CredentialDelivery.PerRequest,\n },\n interface: FinalHarnessInterface.Nanocode,\n adapter: FinalAcpAdapter.Nanocode,\n run: { worker: { program: FinalWorkerProgram.NanocodeCodex } },\n services: [HarnessService.FrameAttachments, HarnessService.SubscriptionRelay],\n mcp: [McpTransportKind.Acp, McpTransportKind.Http],\n consumes: [SandboxWire.HandleRpc],\n supports: { observe: true, resumeReplay: true, authorMeta: true },\n // A prompt that arrives while a turn runs steers into it. A lost invocation\n // resumes its running turn by id; an interrupted call's ask is not raised\n // again, and the session service releases it at the next idle.\n promptWhileRunning: PromptWhileRunning.Inject,\n sessionSurvivesDisconnect: true,\n});\n\nexport interface ServerlessNanocodeCodexInputIface {\n model: string;\n reasoning?:\n | (typeof CODEX_REASONING_LEVELS)[number]\n | `${(typeof CODEX_REASONING_LEVELS)[number]}`;\n inference?: InferenceInput;\n permissionMode?: PermissionInput;\n approvalsReviewer?: ApprovalsReviewer | `${ApprovalsReviewer}`;\n // The worker-runtime sandbox it runs in; absent: the caller's plan creates one.\n environment?: HarnessEnvironmentIface;\n}\n\nexport const serverlessNanocodeCodex = ({\n environment,\n ...configuration\n}: ServerlessNanocodeCodexInputIface): HarnessSettingsIface =>\n harnessSettings({ harness: FinalHarness.NanocodeCodex, configuration, environment });\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAIK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,cAAc,uBAAuB,0BAA0B;AACzF,SAAS,iCAAiC;AAQnC,MAAM,yBAAyB;AAAA,EACpC,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;AAEO,MAAM,yBAAiD,cAAc;AAAA,EAC1E,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB,0BAA0B;AAAA,IAC7C,OAAO;AAAA,IACP,WAAW;AAAA,EACb,CAAC;AAAA,EACD,UAAU,OAAO,OAAO,cAAc;AAAA,EACtC,kBAAkB,gBAAgB;AAAA,EAClC,WAAW;AAAA,IACT,SAAS,CAAC,YAAY,MAAM;AAAA,IAC5B,OAAO;AAAA,MACL,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,IACtB;AAAA,IACA,UAAU,mBAAmB;AAAA,EAC/B;AAAA,EACA,WAAW,sBAAsB;AAAA,EACjC,SAAS,gBAAgB;AAAA,EACzB,KAAK,EAAE,QAAQ,EAAE,SAAS,mBAAmB,cAAc,EAAE;AAAA,EAC7D,UAAU,CAAC,eAAe,kBAAkB,eAAe,iBAAiB;AAAA,EAC5E,KAAK,CAAC,iBAAiB,KAAK,iBAAiB,IAAI;AAAA,EACjD,UAAU,CAAC,YAAY,SAAS;AAAA,EAChC,UAAU,EAAE,SAAS,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA,EAIhE,oBAAoB,mBAAmB;AAAA,EACvC,2BAA2B;AAC7B,CAAC;AAcM,MAAM,0BAA0B,CAAC;AAAA,EACtC;AAAA,EACA,GAAG;AACL,MACE,gBAAgB,EAAE,SAAS,aAAa,eAAe,eAAe,YAAY,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -54,10 +54,11 @@ const PI_HARNESS = defineHarness({
|
|
|
54
54
|
mcp: [McpTransportKind.Acp, McpTransportKind.Http],
|
|
55
55
|
consumes: [SandboxWire.HandleRpc],
|
|
56
56
|
supports: { observe: true, resumeReplay: true, authorMeta: true },
|
|
57
|
-
// A steer joins the running turn.
|
|
58
|
-
//
|
|
57
|
+
// A steer joins the running turn. A lost invocation resumes its turn from
|
|
58
|
+
// durable storage and raises open asks again under their session-unique ids,
|
|
59
|
+
// so the session survives a disconnect.
|
|
59
60
|
promptWhileRunning: PromptWhileRunning.Inject,
|
|
60
|
-
sessionSurvivesDisconnect:
|
|
61
|
+
sessionSurvivesDisconnect: true
|
|
61
62
|
});
|
|
62
63
|
const serverlessPi = ({
|
|
63
64
|
environment,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/harnesses/pi.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineHarness } from '@finalai/agent-definition/authoring';\nimport {\n CredentialDelivery,\n HarnessFeature,\n HarnessService,\n InferenceSourceKind,\n McpTransportKind,\n PermissionLevel,\n PromptWhileRunning,\n SandboxWire,\n type HarnessDefinitionIface,\n type HarnessEnvironmentIface,\n type HarnessSettingsIface,\n} from '@finalai/agent-provider';\nimport {\n configObjectJson,\n harnessSettings,\n inferenceJson,\n modelJson,\n permissionModeJson,\n reasoningJson,\n ReasoningLevel,\n type InferenceInput,\n type PermissionInput,\n} from \"./config-fields.mjs\";\nimport { ModelVendor } from \"./model-reference.mjs\";\nimport { FinalAcpAdapter, FinalHarness, FinalHarnessInterface, FinalWorkerProgram } from \"./names.mjs\";\n\n// Pi (pi-mono) as a worker program, one durable instance per harness session.\n// It drives the sandboxes provided for `files` and `shell` with its own tools\n// (read, write, edit, grep, find, ls, bash). There is no public process\n// adapter for Pi's interface yet, so Pi runs only as a worker or at a URL.\n\nexport const PI_REASONING_LEVELS = [\n ReasoningLevel.None,\n ReasoningLevel.Minimal,\n ReasoningLevel.Low,\n ReasoningLevel.Medium,\n ReasoningLevel.High,\n] as const;\n\nexport const PI_HARNESS: HarnessDefinitionIface = defineHarness({\n title: 'Pi',\n description: 'The Pi coding agent, run per session on a worker runtime.',\n configurationSchema: configObjectJson({\n required: ['model'],\n title: 'Pi',\n properties: {\n model: modelJson(),\n reasoning: reasoningJson(PI_REASONING_LEVELS),\n inference: inferenceJson(),\n permissionMode: permissionModeJson(),\n },\n }),\n features: Object.values(HarnessFeature),\n lowestPermission: PermissionLevel.Ask,\n inference: {\n vendors: [ModelVendor.OpenRouter, ModelVendor.OpenAI, ModelVendor.Anthropic],\n kinds: [InferenceSourceKind.ApiKey, InferenceSourceKind.Final],\n delivery: CredentialDelivery.PerRequest,\n },\n interface: FinalHarnessInterface.PiAgent,\n adapter: FinalAcpAdapter.Pi,\n run: { worker: { program: FinalWorkerProgram.Pi } },\n services: [HarnessService.FrameAttachments],\n mcp: [McpTransportKind.Acp, McpTransportKind.Http],\n consumes: [SandboxWire.HandleRpc],\n supports: { observe: true, resumeReplay: true, authorMeta: true },\n // A steer joins the running turn.
|
|
5
|
-
"mappings": "AAAA,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,cAAc,uBAAuB,0BAA0B;AAOlF,MAAM,sBAAsB;AAAA,EACjC,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;AAEO,MAAM,aAAqC,cAAc;AAAA,EAC9D,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB,iBAAiB;AAAA,IACpC,UAAU,CAAC,OAAO;AAAA,IAClB,OAAO;AAAA,IACP,YAAY;AAAA,MACV,OAAO,UAAU;AAAA,MACjB,WAAW,cAAc,mBAAmB;AAAA,MAC5C,WAAW,cAAc;AAAA,MACzB,gBAAgB,mBAAmB;AAAA,IACrC;AAAA,EACF,CAAC;AAAA,EACD,UAAU,OAAO,OAAO,cAAc;AAAA,EACtC,kBAAkB,gBAAgB;AAAA,EAClC,WAAW;AAAA,IACT,SAAS,CAAC,YAAY,YAAY,YAAY,QAAQ,YAAY,SAAS;AAAA,IAC3E,OAAO,CAAC,oBAAoB,QAAQ,oBAAoB,KAAK;AAAA,IAC7D,UAAU,mBAAmB;AAAA,EAC/B;AAAA,EACA,WAAW,sBAAsB;AAAA,EACjC,SAAS,gBAAgB;AAAA,EACzB,KAAK,EAAE,QAAQ,EAAE,SAAS,mBAAmB,GAAG,EAAE;AAAA,EAClD,UAAU,CAAC,eAAe,gBAAgB;AAAA,EAC1C,KAAK,CAAC,iBAAiB,KAAK,iBAAiB,IAAI;AAAA,EACjD,UAAU,CAAC,YAAY,SAAS;AAAA,EAChC,UAAU,EAAE,SAAS,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA;AAAA;AAAA,
|
|
4
|
+
"sourcesContent": ["import { defineHarness } from '@finalai/agent-definition/authoring';\nimport {\n CredentialDelivery,\n HarnessFeature,\n HarnessService,\n InferenceSourceKind,\n McpTransportKind,\n PermissionLevel,\n PromptWhileRunning,\n SandboxWire,\n type HarnessDefinitionIface,\n type HarnessEnvironmentIface,\n type HarnessSettingsIface,\n} from '@finalai/agent-provider';\nimport {\n configObjectJson,\n harnessSettings,\n inferenceJson,\n modelJson,\n permissionModeJson,\n reasoningJson,\n ReasoningLevel,\n type InferenceInput,\n type PermissionInput,\n} from \"./config-fields.mjs\";\nimport { ModelVendor } from \"./model-reference.mjs\";\nimport { FinalAcpAdapter, FinalHarness, FinalHarnessInterface, FinalWorkerProgram } from \"./names.mjs\";\n\n// Pi (pi-mono) as a worker program, one durable instance per harness session.\n// It drives the sandboxes provided for `files` and `shell` with its own tools\n// (read, write, edit, grep, find, ls, bash). There is no public process\n// adapter for Pi's interface yet, so Pi runs only as a worker or at a URL.\n\nexport const PI_REASONING_LEVELS = [\n ReasoningLevel.None,\n ReasoningLevel.Minimal,\n ReasoningLevel.Low,\n ReasoningLevel.Medium,\n ReasoningLevel.High,\n] as const;\n\nexport const PI_HARNESS: HarnessDefinitionIface = defineHarness({\n title: 'Pi',\n description: 'The Pi coding agent, run per session on a worker runtime.',\n configurationSchema: configObjectJson({\n required: ['model'],\n title: 'Pi',\n properties: {\n model: modelJson(),\n reasoning: reasoningJson(PI_REASONING_LEVELS),\n inference: inferenceJson(),\n permissionMode: permissionModeJson(),\n },\n }),\n features: Object.values(HarnessFeature),\n lowestPermission: PermissionLevel.Ask,\n inference: {\n vendors: [ModelVendor.OpenRouter, ModelVendor.OpenAI, ModelVendor.Anthropic],\n kinds: [InferenceSourceKind.ApiKey, InferenceSourceKind.Final],\n delivery: CredentialDelivery.PerRequest,\n },\n interface: FinalHarnessInterface.PiAgent,\n adapter: FinalAcpAdapter.Pi,\n run: { worker: { program: FinalWorkerProgram.Pi } },\n services: [HarnessService.FrameAttachments],\n mcp: [McpTransportKind.Acp, McpTransportKind.Http],\n consumes: [SandboxWire.HandleRpc],\n supports: { observe: true, resumeReplay: true, authorMeta: true },\n // A steer joins the running turn. A lost invocation resumes its turn from\n // durable storage and raises open asks again under their session-unique ids,\n // so the session survives a disconnect.\n promptWhileRunning: PromptWhileRunning.Inject,\n sessionSurvivesDisconnect: true,\n});\n\nexport interface ServerlessPiInputIface {\n model: string;\n reasoning?: (typeof PI_REASONING_LEVELS)[number] | `${(typeof PI_REASONING_LEVELS)[number]}`;\n inference?: InferenceInput;\n permissionMode?: PermissionInput;\n // The worker-runtime sandbox it runs in, or an endpoint already running it;\n // absent: the client creates one the session or conversation owns.\n environment?: HarnessEnvironmentIface;\n}\n\nexport const serverlessPi = ({\n environment,\n ...configuration\n}: ServerlessPiInputIface): HarnessSettingsIface =>\n harnessSettings({ harness: FinalHarness.Pi, configuration, environment });\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,cAAc,uBAAuB,0BAA0B;AAOlF,MAAM,sBAAsB;AAAA,EACjC,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;AAEO,MAAM,aAAqC,cAAc;AAAA,EAC9D,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB,iBAAiB;AAAA,IACpC,UAAU,CAAC,OAAO;AAAA,IAClB,OAAO;AAAA,IACP,YAAY;AAAA,MACV,OAAO,UAAU;AAAA,MACjB,WAAW,cAAc,mBAAmB;AAAA,MAC5C,WAAW,cAAc;AAAA,MACzB,gBAAgB,mBAAmB;AAAA,IACrC;AAAA,EACF,CAAC;AAAA,EACD,UAAU,OAAO,OAAO,cAAc;AAAA,EACtC,kBAAkB,gBAAgB;AAAA,EAClC,WAAW;AAAA,IACT,SAAS,CAAC,YAAY,YAAY,YAAY,QAAQ,YAAY,SAAS;AAAA,IAC3E,OAAO,CAAC,oBAAoB,QAAQ,oBAAoB,KAAK;AAAA,IAC7D,UAAU,mBAAmB;AAAA,EAC/B;AAAA,EACA,WAAW,sBAAsB;AAAA,EACjC,SAAS,gBAAgB;AAAA,EACzB,KAAK,EAAE,QAAQ,EAAE,SAAS,mBAAmB,GAAG,EAAE;AAAA,EAClD,UAAU,CAAC,eAAe,gBAAgB;AAAA,EAC1C,KAAK,CAAC,iBAAiB,KAAK,iBAAiB,IAAI;AAAA,EACjD,UAAU,CAAC,YAAY,SAAS;AAAA,EAChC,UAAU,EAAE,SAAS,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA,EAIhE,oBAAoB,mBAAmB;AAAA,EACvC,2BAA2B;AAC7B,CAAC;AAYM,MAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,MACE,gBAAgB,EAAE,SAAS,aAAa,IAAI,eAAe,YAAY,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finalai/final-agent-provider",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Final's harness and ACP adapter definitions and the general harness provider, computer, device and local sandbox providers, and Final's MCP gateway integration.",
|
|
6
6
|
"license": "Apache-2.0",
|