@agent-native/core 0.18.1 → 0.19.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/README.md +1 -11
- package/dist/a2a/caller-auth.d.ts +1 -0
- package/dist/a2a/caller-auth.d.ts.map +1 -1
- package/dist/a2a/caller-auth.js +1 -1
- package/dist/a2a/caller-auth.js.map +1 -1
- package/dist/a2a/client.d.ts +7 -0
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +3 -0
- package/dist/a2a/client.js.map +1 -1
- package/dist/agent/production-agent.d.ts +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +34 -2
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js +47 -256
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/connect.d.ts +94 -0
- package/dist/cli/connect.d.ts.map +1 -0
- package/dist/cli/connect.js +443 -0
- package/dist/cli/connect.js.map +1 -0
- package/dist/cli/index.js +16 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-config-writers.d.ts +71 -0
- package/dist/cli/mcp-config-writers.d.ts.map +1 -0
- package/dist/cli/mcp-config-writers.js +210 -0
- package/dist/cli/mcp-config-writers.js.map +1 -0
- package/dist/client/AgentPanel.d.ts +3 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +4 -4
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +3 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +22 -66
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +4 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts +6 -1
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +5 -4
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +6 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +20 -10
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/conversation/AgentConversation.d.ts +18 -0
- package/dist/client/conversation/AgentConversation.d.ts.map +1 -0
- package/dist/client/conversation/AgentConversation.js +94 -0
- package/dist/client/conversation/AgentConversation.js.map +1 -0
- package/dist/client/conversation/AgentConversation.spec.d.ts +2 -0
- package/dist/client/conversation/AgentConversation.spec.d.ts.map +1 -0
- package/dist/client/conversation/AgentConversation.spec.js +69 -0
- package/dist/client/conversation/AgentConversation.spec.js.map +1 -0
- package/dist/client/conversation/index.d.ts +4 -0
- package/dist/client/conversation/index.d.ts.map +1 -0
- package/dist/client/conversation/index.js +3 -0
- package/dist/client/conversation/index.js.map +1 -0
- package/dist/client/conversation/types.d.ts +54 -0
- package/dist/client/conversation/types.d.ts.map +1 -0
- package/dist/client/conversation/types.js +2 -0
- package/dist/client/conversation/types.js.map +1 -0
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts +15 -0
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts.map +1 -0
- package/dist/client/conversation/use-near-bottom-autoscroll.js +66 -0
- package/dist/client/conversation/use-near-bottom-autoscroll.js.map +1 -0
- package/dist/client/dynamic-suggestions.d.ts +43 -0
- package/dist/client/dynamic-suggestions.d.ts.map +1 -0
- package/dist/client/dynamic-suggestions.js +344 -0
- package/dist/client/dynamic-suggestions.js.map +1 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/resources/ResourceTree.d.ts.map +1 -1
- package/dist/client/resources/ResourceTree.js +2 -2
- package/dist/client/resources/ResourceTree.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +4 -28
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/SettingsPanel.js +2 -2
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/code-agents/index.d.ts +1 -0
- package/dist/code-agents/index.d.ts.map +1 -1
- package/dist/code-agents/index.js +1 -0
- package/dist/code-agents/index.js.map +1 -1
- package/dist/code-agents/transcript-normalizer.d.ts +50 -0
- package/dist/code-agents/transcript-normalizer.d.ts.map +1 -0
- package/dist/code-agents/transcript-normalizer.js +356 -0
- package/dist/code-agents/transcript-normalizer.js.map +1 -0
- package/dist/coding-tools/index.d.ts +31 -0
- package/dist/coding-tools/index.d.ts.map +1 -0
- package/dist/coding-tools/index.js +411 -0
- package/dist/coding-tools/index.js.map +1 -0
- package/dist/extensions/schema.d.ts +1 -1
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +30 -0
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/mcp/builtin-tools.d.ts.map +1 -1
- package/dist/mcp/builtin-tools.js +85 -26
- package/dist/mcp/builtin-tools.js.map +1 -1
- package/dist/mcp/connect-route.d.ts +43 -0
- package/dist/mcp/connect-route.d.ts.map +1 -0
- package/dist/mcp/connect-route.js +744 -0
- package/dist/mcp/connect-route.js.map +1 -0
- package/dist/mcp/connect-store.d.ts +132 -0
- package/dist/mcp/connect-store.d.ts.map +1 -0
- package/dist/mcp/connect-store.js +434 -0
- package/dist/mcp/connect-store.js.map +1 -0
- package/dist/mcp/org-directory.d.ts +83 -0
- package/dist/mcp/org-directory.d.ts.map +1 -0
- package/dist/mcp/org-directory.js +201 -0
- package/dist/mcp/org-directory.js.map +1 -0
- package/dist/mcp/server.d.ts +38 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +208 -77
- package/dist/mcp/server.js.map +1 -1
- package/dist/scripts/dev/index.d.ts +6 -4
- package/dist/scripts/dev/index.d.ts.map +1 -1
- package/dist/scripts/dev/index.js +28 -13
- package/dist/scripts/dev/index.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +6 -6
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +32 -32
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-teams.js +2 -2
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/agents-bundle.d.ts +3 -3
- package/dist/server/agents-bundle.js +5 -5
- package/dist/server/agents-bundle.js.map +1 -1
- package/dist/server/auth.d.ts +17 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +149 -33
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts +43 -0
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +25 -0
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts +12 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +42 -0
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/identity-sso-store.d.ts +86 -0
- package/dist/server/identity-sso-store.d.ts.map +1 -0
- package/dist/server/identity-sso-store.js +243 -0
- package/dist/server/identity-sso-store.js.map +1 -0
- package/dist/server/identity-sso.d.ts +78 -0
- package/dist/server/identity-sso.d.ts.map +1 -0
- package/dist/server/identity-sso.js +425 -0
- package/dist/server/identity-sso.js.map +1 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +2 -1
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/sentry.d.ts.map +1 -1
- package/dist/server/sentry.js +17 -2
- package/dist/server/sentry.js.map +1 -1
- package/dist/sharing/schema.d.ts +1 -1
- package/docs/content/client.md +15 -0
- package/docs/content/code-agents-ui.md +25 -4
- package/docs/content/cross-app-sso.md +118 -0
- package/docs/content/drop-in-agent.md +3 -1
- package/docs/content/external-agents.md +130 -51
- package/docs/content/frames.md +1 -1
- package/docs/content/migration-workbench.md +6 -1
- package/package.json +2 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { createCompositeBackgroundAgentController, createLocalCodeBackgroundAgentController, localCodeBackgroundAgentController, type BackgroundAgentController, type BackgroundAgentControlCommand, type BackgroundAgentControlInput, type BackgroundAgentControlResult, type BackgroundAgentFollowUpInput, } from "./background-controller.js";
|
|
2
2
|
export { getBackgroundAgentRun, listBackgroundAgentRuns, listBackgroundAgentTranscriptEvents, toBackgroundAgentRun, toBackgroundAgentTranscriptEvent, type BackgroundAgentRun, type BackgroundAgentRunKind, type BackgroundAgentRunSource, type BackgroundAgentRunSourceRecord, type BackgroundAgentRunStatus, type BackgroundAgentTranscriptEvent, type ListBackgroundAgentRunsOptions, } from "./background-run.js";
|
|
3
|
+
export { normalizeCodeAgentTranscript, type NormalizedCodeAgentAssistantTurn, type NormalizedCodeAgentStatusEvent, type NormalizedCodeAgentToolEvent, type NormalizedCodeAgentTranscript, type NormalizedCodeAgentTranscriptBase, type NormalizedCodeAgentTranscriptItem, type NormalizedCodeAgentUserTurn, } from "./transcript-normalizer.js";
|
|
3
4
|
export { CODE_AGENT_PERMISSION_MODES, appendCodeAgentTranscriptEvent, codeAgentRunArtifactsDir, codeAgentRunTranscriptPath, codeAgentRunsDir, codeAgentStoreRoot, codeAgentTranscriptsDir, createCodeAgentRunRecord, getCodeAgentRunRecord, getLastCodeAgentRunRecord, isActiveCodeAgentRun, listCodeAgentRunRecords, listCodeAgentTranscriptEvents, normalizeCodeAgentPermissionMode, queueCodeAgentFollowUp, updateCodeAgentRunRecord, type AppendCodeAgentTranscriptEventInput, type CodeAgentPermissionMode, type CodeAgentRunDetail, type CodeAgentRunProgress, type CodeAgentRunRecord, type CodeAgentRunStatus, type CodeAgentTranscriptEvent, type CodeAgentTranscriptEventKind, type CreateCodeAgentRunInput, type CodeAgentFollowUpMode, type QueueCodeAgentFollowUpInput, } from "../cli/code-agent-runs.js";
|
|
4
5
|
export { findProjectSlashCommand, isReservedProjectSlashCommandName, listProjectSkills, listProjectSlashCommands, listVisibleProjectSlashCommands, readProjectCodePack, renderProjectSlashCommandPrompt, type CodeAgentCodePack, type CodeAgentProjectCommand, type CodeAgentProjectSkill, type ReadProjectCodePackOptions, } from "../cli/code-agent-commands.js";
|
|
5
6
|
export { executeCodeAgentRun, executeExistingCodeAgentRun, executePendingCodeAgentApproval, type ExecuteCodeAgentRunOptions, } from "../cli/code-agent-executor.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/code-agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wCAAwC,EACxC,wCAAwC,EACxC,kCAAkC,EAClC,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,GAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,mCAAmC,EACnC,oBAAoB,EACpB,gCAAgC,EAChC,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,GACpC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,6BAA6B,EAC7B,gCAAgC,EAChC,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,mCAAmC,EACxC,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,GACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,iCAAiC,EACjC,iBAAiB,EACjB,wBAAwB,EACxB,+BAA+B,EAC/B,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,+BAA+B,EAC/B,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/code-agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wCAAwC,EACxC,wCAAwC,EACxC,kCAAkC,EAClC,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,GAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,mCAAmC,EACnC,oBAAoB,EACpB,gCAAgC,EAChC,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,GACpC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,4BAA4B,EAC5B,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EACtC,KAAK,iCAAiC,EACtC,KAAK,2BAA2B,GACjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,6BAA6B,EAC7B,gCAAgC,EAChC,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,mCAAmC,EACxC,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,GACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,iCAAiC,EACjC,iBAAiB,EACjB,wBAAwB,EACxB,+BAA+B,EAC/B,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,+BAA+B,EAC/B,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { createCompositeBackgroundAgentController, createLocalCodeBackgroundAgentController, localCodeBackgroundAgentController, } from "./background-controller.js";
|
|
2
2
|
export { getBackgroundAgentRun, listBackgroundAgentRuns, listBackgroundAgentTranscriptEvents, toBackgroundAgentRun, toBackgroundAgentTranscriptEvent, } from "./background-run.js";
|
|
3
|
+
export { normalizeCodeAgentTranscript, } from "./transcript-normalizer.js";
|
|
3
4
|
export { CODE_AGENT_PERMISSION_MODES, appendCodeAgentTranscriptEvent, codeAgentRunArtifactsDir, codeAgentRunTranscriptPath, codeAgentRunsDir, codeAgentStoreRoot, codeAgentTranscriptsDir, createCodeAgentRunRecord, getCodeAgentRunRecord, getLastCodeAgentRunRecord, isActiveCodeAgentRun, listCodeAgentRunRecords, listCodeAgentTranscriptEvents, normalizeCodeAgentPermissionMode, queueCodeAgentFollowUp, updateCodeAgentRunRecord, } from "../cli/code-agent-runs.js";
|
|
4
5
|
export { findProjectSlashCommand, isReservedProjectSlashCommandName, listProjectSkills, listProjectSlashCommands, listVisibleProjectSlashCommands, readProjectCodePack, renderProjectSlashCommandPrompt, } from "../cli/code-agent-commands.js";
|
|
5
6
|
export { executeCodeAgentRun, executeExistingCodeAgentRun, executePendingCodeAgentApproval, } from "../cli/code-agent-executor.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/code-agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wCAAwC,EACxC,wCAAwC,EACxC,kCAAkC,GAMnC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,mCAAmC,EACnC,oBAAoB,EACpB,gCAAgC,GAQjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,6BAA6B,EAC7B,gCAAgC,EAChC,sBAAsB,EACtB,wBAAwB,GAYzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,iCAAiC,EACjC,iBAAiB,EACjB,wBAAwB,EACxB,+BAA+B,EAC/B,mBAAmB,EACnB,+BAA+B,GAKhC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,+BAA+B,GAEhC,MAAM,+BAA+B,CAAC","sourcesContent":["export {\n createCompositeBackgroundAgentController,\n createLocalCodeBackgroundAgentController,\n localCodeBackgroundAgentController,\n type BackgroundAgentController,\n type BackgroundAgentControlCommand,\n type BackgroundAgentControlInput,\n type BackgroundAgentControlResult,\n type BackgroundAgentFollowUpInput,\n} from \"./background-controller.js\";\nexport {\n getBackgroundAgentRun,\n listBackgroundAgentRuns,\n listBackgroundAgentTranscriptEvents,\n toBackgroundAgentRun,\n toBackgroundAgentTranscriptEvent,\n type BackgroundAgentRun,\n type BackgroundAgentRunKind,\n type BackgroundAgentRunSource,\n type BackgroundAgentRunSourceRecord,\n type BackgroundAgentRunStatus,\n type BackgroundAgentTranscriptEvent,\n type ListBackgroundAgentRunsOptions,\n} from \"./background-run.js\";\nexport {\n CODE_AGENT_PERMISSION_MODES,\n appendCodeAgentTranscriptEvent,\n codeAgentRunArtifactsDir,\n codeAgentRunTranscriptPath,\n codeAgentRunsDir,\n codeAgentStoreRoot,\n codeAgentTranscriptsDir,\n createCodeAgentRunRecord,\n getCodeAgentRunRecord,\n getLastCodeAgentRunRecord,\n isActiveCodeAgentRun,\n listCodeAgentRunRecords,\n listCodeAgentTranscriptEvents,\n normalizeCodeAgentPermissionMode,\n queueCodeAgentFollowUp,\n updateCodeAgentRunRecord,\n type AppendCodeAgentTranscriptEventInput,\n type CodeAgentPermissionMode,\n type CodeAgentRunDetail,\n type CodeAgentRunProgress,\n type CodeAgentRunRecord,\n type CodeAgentRunStatus,\n type CodeAgentTranscriptEvent,\n type CodeAgentTranscriptEventKind,\n type CreateCodeAgentRunInput,\n type CodeAgentFollowUpMode,\n type QueueCodeAgentFollowUpInput,\n} from \"../cli/code-agent-runs.js\";\nexport {\n findProjectSlashCommand,\n isReservedProjectSlashCommandName,\n listProjectSkills,\n listProjectSlashCommands,\n listVisibleProjectSlashCommands,\n readProjectCodePack,\n renderProjectSlashCommandPrompt,\n type CodeAgentCodePack,\n type CodeAgentProjectCommand,\n type CodeAgentProjectSkill,\n type ReadProjectCodePackOptions,\n} from \"../cli/code-agent-commands.js\";\nexport {\n executeCodeAgentRun,\n executeExistingCodeAgentRun,\n executePendingCodeAgentApproval,\n type ExecuteCodeAgentRunOptions,\n} from \"../cli/code-agent-executor.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/code-agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wCAAwC,EACxC,wCAAwC,EACxC,kCAAkC,GAMnC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,mCAAmC,EACnC,oBAAoB,EACpB,gCAAgC,GAQjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,4BAA4B,GAQ7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,6BAA6B,EAC7B,gCAAgC,EAChC,sBAAsB,EACtB,wBAAwB,GAYzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,iCAAiC,EACjC,iBAAiB,EACjB,wBAAwB,EACxB,+BAA+B,EAC/B,mBAAmB,EACnB,+BAA+B,GAKhC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,+BAA+B,GAEhC,MAAM,+BAA+B,CAAC","sourcesContent":["export {\n createCompositeBackgroundAgentController,\n createLocalCodeBackgroundAgentController,\n localCodeBackgroundAgentController,\n type BackgroundAgentController,\n type BackgroundAgentControlCommand,\n type BackgroundAgentControlInput,\n type BackgroundAgentControlResult,\n type BackgroundAgentFollowUpInput,\n} from \"./background-controller.js\";\nexport {\n getBackgroundAgentRun,\n listBackgroundAgentRuns,\n listBackgroundAgentTranscriptEvents,\n toBackgroundAgentRun,\n toBackgroundAgentTranscriptEvent,\n type BackgroundAgentRun,\n type BackgroundAgentRunKind,\n type BackgroundAgentRunSource,\n type BackgroundAgentRunSourceRecord,\n type BackgroundAgentRunStatus,\n type BackgroundAgentTranscriptEvent,\n type ListBackgroundAgentRunsOptions,\n} from \"./background-run.js\";\nexport {\n normalizeCodeAgentTranscript,\n type NormalizedCodeAgentAssistantTurn,\n type NormalizedCodeAgentStatusEvent,\n type NormalizedCodeAgentToolEvent,\n type NormalizedCodeAgentTranscript,\n type NormalizedCodeAgentTranscriptBase,\n type NormalizedCodeAgentTranscriptItem,\n type NormalizedCodeAgentUserTurn,\n} from \"./transcript-normalizer.js\";\nexport {\n CODE_AGENT_PERMISSION_MODES,\n appendCodeAgentTranscriptEvent,\n codeAgentRunArtifactsDir,\n codeAgentRunTranscriptPath,\n codeAgentRunsDir,\n codeAgentStoreRoot,\n codeAgentTranscriptsDir,\n createCodeAgentRunRecord,\n getCodeAgentRunRecord,\n getLastCodeAgentRunRecord,\n isActiveCodeAgentRun,\n listCodeAgentRunRecords,\n listCodeAgentTranscriptEvents,\n normalizeCodeAgentPermissionMode,\n queueCodeAgentFollowUp,\n updateCodeAgentRunRecord,\n type AppendCodeAgentTranscriptEventInput,\n type CodeAgentPermissionMode,\n type CodeAgentRunDetail,\n type CodeAgentRunProgress,\n type CodeAgentRunRecord,\n type CodeAgentRunStatus,\n type CodeAgentTranscriptEvent,\n type CodeAgentTranscriptEventKind,\n type CreateCodeAgentRunInput,\n type CodeAgentFollowUpMode,\n type QueueCodeAgentFollowUpInput,\n} from \"../cli/code-agent-runs.js\";\nexport {\n findProjectSlashCommand,\n isReservedProjectSlashCommandName,\n listProjectSkills,\n listProjectSlashCommands,\n listVisibleProjectSlashCommands,\n readProjectCodePack,\n renderProjectSlashCommandPrompt,\n type CodeAgentCodePack,\n type CodeAgentProjectCommand,\n type CodeAgentProjectSkill,\n type ReadProjectCodePackOptions,\n} from \"../cli/code-agent-commands.js\";\nexport {\n executeCodeAgentRun,\n executeExistingCodeAgentRun,\n executePendingCodeAgentApproval,\n type ExecuteCodeAgentRunOptions,\n} from \"../cli/code-agent-executor.js\";\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { CodeAgentTranscriptEvent } from "../cli/code-agent-runs.js";
|
|
2
|
+
export type { CodeAgentTranscriptEvent } from "../cli/code-agent-runs.js";
|
|
3
|
+
export type NormalizedCodeAgentTranscriptItem = NormalizedCodeAgentUserTurn | NormalizedCodeAgentAssistantTurn | NormalizedCodeAgentToolEvent | NormalizedCodeAgentStatusEvent;
|
|
4
|
+
export interface NormalizedCodeAgentTranscript {
|
|
5
|
+
items: NormalizedCodeAgentTranscriptItem[];
|
|
6
|
+
rawEvents: CodeAgentTranscriptEvent[];
|
|
7
|
+
hiddenEvents: CodeAgentTranscriptEvent[];
|
|
8
|
+
}
|
|
9
|
+
export interface NormalizedCodeAgentTranscriptBase {
|
|
10
|
+
id: string;
|
|
11
|
+
createdAt: string;
|
|
12
|
+
updatedAt: string;
|
|
13
|
+
eventIds: string[];
|
|
14
|
+
events: CodeAgentTranscriptEvent[];
|
|
15
|
+
turnIndex: number;
|
|
16
|
+
}
|
|
17
|
+
export interface NormalizedCodeAgentUserTurn extends NormalizedCodeAgentTranscriptBase {
|
|
18
|
+
type: "user";
|
|
19
|
+
role: "user";
|
|
20
|
+
text: string;
|
|
21
|
+
}
|
|
22
|
+
export interface NormalizedCodeAgentAssistantTurn extends NormalizedCodeAgentTranscriptBase {
|
|
23
|
+
type: "assistant";
|
|
24
|
+
role: "assistant";
|
|
25
|
+
text: string;
|
|
26
|
+
source: "system" | "runner-stdout";
|
|
27
|
+
suppressedDuplicateEventIds?: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface NormalizedCodeAgentToolEvent extends NormalizedCodeAgentTranscriptBase {
|
|
30
|
+
type: "tool";
|
|
31
|
+
tool?: string;
|
|
32
|
+
label: string;
|
|
33
|
+
state: "activity" | "running" | "completed";
|
|
34
|
+
input?: unknown;
|
|
35
|
+
result?: unknown;
|
|
36
|
+
activities: string[];
|
|
37
|
+
startedAt?: string;
|
|
38
|
+
completedAt?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface NormalizedCodeAgentStatusEvent extends NormalizedCodeAgentTranscriptBase {
|
|
41
|
+
type: "status";
|
|
42
|
+
level: "info" | "warning" | "error" | "approval";
|
|
43
|
+
text: string;
|
|
44
|
+
statusKind: CodeAgentTranscriptEvent["kind"];
|
|
45
|
+
status?: string;
|
|
46
|
+
phase?: string;
|
|
47
|
+
metadata?: Record<string, unknown>;
|
|
48
|
+
}
|
|
49
|
+
export declare function normalizeCodeAgentTranscript(events: readonly CodeAgentTranscriptEvent[]): NormalizedCodeAgentTranscript;
|
|
50
|
+
//# sourceMappingURL=transcript-normalizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-normalizer.d.ts","sourceRoot":"","sources":["../../src/code-agents/transcript-normalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,MAAM,MAAM,iCAAiC,GACzC,2BAA2B,GAC3B,gCAAgC,GAChC,4BAA4B,GAC5B,8BAA8B,CAAC;AAEnC,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,iCAAiC,EAAE,CAAC;IAC3C,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,YAAY,EAAE,wBAAwB,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA4B,SAAQ,iCAAiC;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gCAAiC,SAAQ,iCAAiC;IACzF,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,eAAe,CAAC;IACnC,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,4BAA6B,SAAQ,iCAAiC;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,8BAA+B,SAAQ,iCAAiC;IACvF,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,wBAAwB,EAAE,GAC1C,6BAA6B,CA2D/B"}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
export function normalizeCodeAgentTranscript(events) {
|
|
2
|
+
const items = [];
|
|
3
|
+
const hiddenEvents = [];
|
|
4
|
+
const eventOrder = new Map(events.map((event, index) => [event.id, index]));
|
|
5
|
+
let turnIndex = -1;
|
|
6
|
+
for (const event of events) {
|
|
7
|
+
const currentTurnIndex = Math.max(turnIndex, 0);
|
|
8
|
+
if (event.kind === "user") {
|
|
9
|
+
turnIndex = turnIndex < 0 ? (items.length === 0 ? 0 : 1) : turnIndex + 1;
|
|
10
|
+
items.push(createUserTurn(event, turnIndex));
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
const assistantSource = assistantTextSource(event);
|
|
14
|
+
if (assistantSource) {
|
|
15
|
+
const text = assistantTextForEvent(event, assistantSource);
|
|
16
|
+
if (!text) {
|
|
17
|
+
hiddenEvents.push(event);
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const previous = items.at(-1);
|
|
21
|
+
if (previous?.type === "assistant" &&
|
|
22
|
+
previous.source === assistantSource &&
|
|
23
|
+
previous.turnIndex === currentTurnIndex) {
|
|
24
|
+
appendAssistantChunk(previous, event, text);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
items.push(createAssistantTurn(event, assistantSource, currentTurnIndex, text));
|
|
28
|
+
}
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const toolType = toolEventType(event);
|
|
32
|
+
if (toolType) {
|
|
33
|
+
appendToolEvent(items, event, toolType, currentTurnIndex);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (shouldShowStatusEvent(event)) {
|
|
37
|
+
items.push(createStatusEvent(event, currentTurnIndex));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
hiddenEvents.push(event);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const dedupedItems = suppressDuplicateFinalAssistantText(items, hiddenEvents);
|
|
44
|
+
hiddenEvents.sort((a, b) => (eventOrder.get(a.id) ?? 0) - (eventOrder.get(b.id) ?? 0));
|
|
45
|
+
return {
|
|
46
|
+
items: dedupedItems,
|
|
47
|
+
rawEvents: [...events],
|
|
48
|
+
hiddenEvents,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function createUserTurn(event, turnIndex) {
|
|
52
|
+
return {
|
|
53
|
+
type: "user",
|
|
54
|
+
role: "user",
|
|
55
|
+
id: event.id,
|
|
56
|
+
text: event.message,
|
|
57
|
+
createdAt: event.createdAt,
|
|
58
|
+
updatedAt: event.createdAt,
|
|
59
|
+
eventIds: [event.id],
|
|
60
|
+
events: [event],
|
|
61
|
+
turnIndex,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function createAssistantTurn(event, source, turnIndex, text) {
|
|
65
|
+
return {
|
|
66
|
+
type: "assistant",
|
|
67
|
+
role: "assistant",
|
|
68
|
+
id: event.id,
|
|
69
|
+
text,
|
|
70
|
+
source,
|
|
71
|
+
createdAt: event.createdAt,
|
|
72
|
+
updatedAt: event.createdAt,
|
|
73
|
+
eventIds: [event.id],
|
|
74
|
+
events: [event],
|
|
75
|
+
turnIndex,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function appendAssistantChunk(item, event, text) {
|
|
79
|
+
item.text = shouldAppendAssistantChunkExactly(item, event)
|
|
80
|
+
? `${item.text}${text}`
|
|
81
|
+
: joinAssistantChunks(item.text, text);
|
|
82
|
+
item.updatedAt = event.createdAt;
|
|
83
|
+
item.eventIds.push(event.id);
|
|
84
|
+
item.events.push(event);
|
|
85
|
+
}
|
|
86
|
+
function createStatusEvent(event, turnIndex) {
|
|
87
|
+
const metadata = event.metadata;
|
|
88
|
+
return {
|
|
89
|
+
type: "status",
|
|
90
|
+
id: event.id,
|
|
91
|
+
text: event.message,
|
|
92
|
+
level: statusEventLevel(event),
|
|
93
|
+
statusKind: event.kind,
|
|
94
|
+
status: stringMetadata(metadata, "status"),
|
|
95
|
+
phase: stringMetadata(metadata, "phase"),
|
|
96
|
+
metadata,
|
|
97
|
+
createdAt: event.createdAt,
|
|
98
|
+
updatedAt: event.createdAt,
|
|
99
|
+
eventIds: [event.id],
|
|
100
|
+
events: [event],
|
|
101
|
+
turnIndex,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function appendToolEvent(items, event, toolType, turnIndex) {
|
|
105
|
+
const tool = stringMetadata(event.metadata, "tool");
|
|
106
|
+
const item = findOpenToolEvent(items, tool, turnIndex);
|
|
107
|
+
if (!item) {
|
|
108
|
+
items.push(createToolEvent(event, toolType, turnIndex));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
item.updatedAt = event.createdAt;
|
|
112
|
+
item.eventIds.push(event.id);
|
|
113
|
+
item.events.push(event);
|
|
114
|
+
if (toolType === "activity") {
|
|
115
|
+
item.activities.push(event.message);
|
|
116
|
+
if (item.state === "activity")
|
|
117
|
+
item.label = event.message;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (toolType === "tool_start") {
|
|
121
|
+
const wasActivity = item.state === "activity";
|
|
122
|
+
item.state = "running";
|
|
123
|
+
item.startedAt = item.startedAt ?? event.createdAt;
|
|
124
|
+
if (hasMetadataKey(event.metadata, "input")) {
|
|
125
|
+
item.input = event.metadata?.input;
|
|
126
|
+
}
|
|
127
|
+
if (wasActivity || item.label === item.activities.at(-1)) {
|
|
128
|
+
item.label = event.message;
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
item.state = "completed";
|
|
133
|
+
item.completedAt = event.createdAt;
|
|
134
|
+
if (hasMetadataKey(event.metadata, "result")) {
|
|
135
|
+
item.result = event.metadata?.result;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function createToolEvent(event, toolType, turnIndex) {
|
|
139
|
+
const metadata = event.metadata;
|
|
140
|
+
const state = toolType === "tool_done"
|
|
141
|
+
? "completed"
|
|
142
|
+
: toolType === "tool_start"
|
|
143
|
+
? "running"
|
|
144
|
+
: "activity";
|
|
145
|
+
return {
|
|
146
|
+
type: "tool",
|
|
147
|
+
id: event.id,
|
|
148
|
+
tool: stringMetadata(metadata, "tool"),
|
|
149
|
+
label: event.message,
|
|
150
|
+
state,
|
|
151
|
+
input: hasMetadataKey(metadata, "input") ? metadata?.input : undefined,
|
|
152
|
+
result: hasMetadataKey(metadata, "result") ? metadata?.result : undefined,
|
|
153
|
+
activities: toolType === "activity" ? [event.message] : [],
|
|
154
|
+
startedAt: toolType === "tool_start" ? event.createdAt : undefined,
|
|
155
|
+
completedAt: toolType === "tool_done" ? event.createdAt : undefined,
|
|
156
|
+
createdAt: event.createdAt,
|
|
157
|
+
updatedAt: event.createdAt,
|
|
158
|
+
eventIds: [event.id],
|
|
159
|
+
events: [event],
|
|
160
|
+
turnIndex,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function findOpenToolEvent(items, tool, turnIndex) {
|
|
164
|
+
for (let index = items.length - 1; index >= 0; index -= 1) {
|
|
165
|
+
const item = items[index];
|
|
166
|
+
if (item.type !== "tool")
|
|
167
|
+
continue;
|
|
168
|
+
if (item.turnIndex !== turnIndex)
|
|
169
|
+
continue;
|
|
170
|
+
if (item.state === "completed")
|
|
171
|
+
continue;
|
|
172
|
+
if (tool && item.tool !== tool)
|
|
173
|
+
continue;
|
|
174
|
+
if (!tool && item.tool)
|
|
175
|
+
continue;
|
|
176
|
+
return item;
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
function suppressDuplicateFinalAssistantText(items, hiddenEvents) {
|
|
181
|
+
const result = [];
|
|
182
|
+
for (const item of items) {
|
|
183
|
+
if (item.type !== "assistant" || item.source !== "system") {
|
|
184
|
+
result.push(item);
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const stdoutItems = result.filter((candidate) => candidate.type === "assistant" &&
|
|
188
|
+
candidate.source === "runner-stdout" &&
|
|
189
|
+
candidate.turnIndex === item.turnIndex);
|
|
190
|
+
if (stdoutItems.length === 0 ||
|
|
191
|
+
!isSameAssistantText(stdoutItems.map((candidate) => candidate.text).join(" "), item.text)) {
|
|
192
|
+
result.push(item);
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
hiddenEvents.push(...item.events);
|
|
196
|
+
const target = stdoutItems.length === 1 ? stdoutItems[0] : stdoutItems.at(-1);
|
|
197
|
+
if (!target)
|
|
198
|
+
continue;
|
|
199
|
+
if (stdoutItems.length === 1) {
|
|
200
|
+
target.text = item.text;
|
|
201
|
+
target.updatedAt = item.updatedAt;
|
|
202
|
+
}
|
|
203
|
+
target.eventIds.push(...item.eventIds);
|
|
204
|
+
target.events.push(...item.events);
|
|
205
|
+
target.suppressedDuplicateEventIds = [
|
|
206
|
+
...(target.suppressedDuplicateEventIds ?? []),
|
|
207
|
+
...item.eventIds,
|
|
208
|
+
];
|
|
209
|
+
}
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
function shouldShowStatusEvent(event) {
|
|
213
|
+
if (event.kind === "artifact" || event.kind === "note")
|
|
214
|
+
return true;
|
|
215
|
+
if (event.kind !== "status")
|
|
216
|
+
return false;
|
|
217
|
+
if (isLowSignalLifecycleEvent(event))
|
|
218
|
+
return false;
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
function isLowSignalLifecycleEvent(event) {
|
|
222
|
+
const metadata = event.metadata;
|
|
223
|
+
const type = stringMetadata(metadata, "type");
|
|
224
|
+
if (type === "mcp-tools-connected")
|
|
225
|
+
return true;
|
|
226
|
+
if (statusEventLevel(event) !== "info")
|
|
227
|
+
return false;
|
|
228
|
+
const status = stringMetadata(metadata, "status");
|
|
229
|
+
const phase = stringMetadata(metadata, "phase");
|
|
230
|
+
if (status === "queued" || status === "running" || status === "completed") {
|
|
231
|
+
return true;
|
|
232
|
+
}
|
|
233
|
+
if (phase === "queued" ||
|
|
234
|
+
phase === "starting" ||
|
|
235
|
+
phase === "executing" ||
|
|
236
|
+
phase === "follow-up" ||
|
|
237
|
+
phase === "complete") {
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
return LOW_SIGNAL_STATUS_MESSAGES.some((pattern) => pattern.test(event.message));
|
|
241
|
+
}
|
|
242
|
+
const LOW_SIGNAL_STATUS_MESSAGES = [
|
|
243
|
+
/^Agent-Native Code run started\.?$/i,
|
|
244
|
+
/^Agent-Native Code run completed\.?$/i,
|
|
245
|
+
/^Agent-Native Code process exited\.?$/i,
|
|
246
|
+
/^Starting local Agent-Native Code execution\.?$/i,
|
|
247
|
+
/^Remote Agent-Native Code run queued\.?$/i,
|
|
248
|
+
/^Connected \d+ MCP tools? for this run\.?$/i,
|
|
249
|
+
];
|
|
250
|
+
function statusEventLevel(event) {
|
|
251
|
+
const metadata = event.metadata;
|
|
252
|
+
const status = stringMetadata(metadata, "status");
|
|
253
|
+
const phase = stringMetadata(metadata, "phase");
|
|
254
|
+
const source = stringMetadata(metadata, "source");
|
|
255
|
+
const type = stringMetadata(metadata, "type");
|
|
256
|
+
if (status === "needs-approval" ||
|
|
257
|
+
Boolean(metadata?.pendingApproval) ||
|
|
258
|
+
Boolean(metadata?.pendingApprovalId) ||
|
|
259
|
+
Boolean(metadata?.approvalId) ||
|
|
260
|
+
phase?.includes("approval") ||
|
|
261
|
+
/\bapproval\b/i.test(event.message)) {
|
|
262
|
+
return "approval";
|
|
263
|
+
}
|
|
264
|
+
if (event.kind === "status" &&
|
|
265
|
+
(status === "errored" ||
|
|
266
|
+
type === "error" ||
|
|
267
|
+
type?.endsWith("-error") ||
|
|
268
|
+
Boolean(metadata?.failed) ||
|
|
269
|
+
typeof metadata?.errorCode === "string" ||
|
|
270
|
+
source === "runner-stderr")) {
|
|
271
|
+
return "error";
|
|
272
|
+
}
|
|
273
|
+
if (status === "paused" ||
|
|
274
|
+
phase === "missing-credentials" ||
|
|
275
|
+
phase === "stopped" ||
|
|
276
|
+
/\b(missing|stopped|unavailable|denied)\b/i.test(event.message)) {
|
|
277
|
+
return "warning";
|
|
278
|
+
}
|
|
279
|
+
return "info";
|
|
280
|
+
}
|
|
281
|
+
function assistantTextSource(event) {
|
|
282
|
+
const source = stringMetadata(event.metadata, "source");
|
|
283
|
+
const type = stringMetadata(event.metadata, "type");
|
|
284
|
+
if (type === "assistant_delta") {
|
|
285
|
+
return "runner-stdout";
|
|
286
|
+
}
|
|
287
|
+
if (event.kind === "status" && source === "runner-stdout") {
|
|
288
|
+
return "runner-stdout";
|
|
289
|
+
}
|
|
290
|
+
if (event.kind === "system" || event.metadata?.role === "assistant") {
|
|
291
|
+
return "system";
|
|
292
|
+
}
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
function shouldAppendAssistantChunkExactly(item, event) {
|
|
296
|
+
return (item.source === "runner-stdout" &&
|
|
297
|
+
(isAssistantDeltaEvent(event) || item.events.some(isAssistantDeltaEvent)));
|
|
298
|
+
}
|
|
299
|
+
function isAssistantDeltaEvent(event) {
|
|
300
|
+
return stringMetadata(event.metadata, "type") === "assistant_delta";
|
|
301
|
+
}
|
|
302
|
+
function assistantTextForEvent(event, source) {
|
|
303
|
+
if (source === "runner-stdout")
|
|
304
|
+
return stripRunnerDiagnostics(event.message);
|
|
305
|
+
return event.message;
|
|
306
|
+
}
|
|
307
|
+
function stripRunnerDiagnostics(value) {
|
|
308
|
+
return value
|
|
309
|
+
.replace(RUNNER_DIAGNOSTIC_LINE_PATTERNS.engineDetect, "")
|
|
310
|
+
.replace(RUNNER_DIAGNOSTIC_LINE_PATTERNS.builderEngine, "");
|
|
311
|
+
}
|
|
312
|
+
const RUNNER_DIAGNOSTIC_LINE_PATTERNS = {
|
|
313
|
+
engineDetect: /^\[engine-detect\][^\r\n]*(?:\r?\n|$)/gm,
|
|
314
|
+
builderEngine: /^\[builder-engine\]\s*[←→][^\r\n]*(?:\r?\n|$)/gm,
|
|
315
|
+
};
|
|
316
|
+
function toolEventType(event) {
|
|
317
|
+
if (event.kind !== "status")
|
|
318
|
+
return null;
|
|
319
|
+
const type = stringMetadata(event.metadata, "type");
|
|
320
|
+
if (type === "activity" || type === "tool_done" || type === "tool_start") {
|
|
321
|
+
return type;
|
|
322
|
+
}
|
|
323
|
+
return null;
|
|
324
|
+
}
|
|
325
|
+
function joinAssistantChunks(previous, next) {
|
|
326
|
+
if (!previous)
|
|
327
|
+
return next;
|
|
328
|
+
if (!next)
|
|
329
|
+
return previous;
|
|
330
|
+
if (/\s$/.test(previous) || /^\s/.test(next))
|
|
331
|
+
return `${previous}${next}`;
|
|
332
|
+
if (/^[.,!?;:)\]}'"`]/.test(next))
|
|
333
|
+
return `${previous}${next}`;
|
|
334
|
+
if (/[(\[{'"`]$/.test(previous))
|
|
335
|
+
return `${previous}${next}`;
|
|
336
|
+
return `${previous} ${next}`;
|
|
337
|
+
}
|
|
338
|
+
function canonicalText(value) {
|
|
339
|
+
return value.replace(/\s+/g, " ").trim();
|
|
340
|
+
}
|
|
341
|
+
function isSameAssistantText(left, right) {
|
|
342
|
+
if (canonicalText(left) === canonicalText(right))
|
|
343
|
+
return true;
|
|
344
|
+
return compactText(left) === compactText(right);
|
|
345
|
+
}
|
|
346
|
+
function compactText(value) {
|
|
347
|
+
return canonicalText(value).replace(/\s+/g, "");
|
|
348
|
+
}
|
|
349
|
+
function stringMetadata(metadata, key) {
|
|
350
|
+
const value = metadata?.[key];
|
|
351
|
+
return typeof value === "string" ? value : undefined;
|
|
352
|
+
}
|
|
353
|
+
function hasMetadataKey(metadata, key) {
|
|
354
|
+
return (Boolean(metadata) && Object.prototype.hasOwnProperty.call(metadata, key));
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=transcript-normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-normalizer.js","sourceRoot":"","sources":["../../src/code-agents/transcript-normalizer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CodeAgentTranscriptEvent } from \"../cli/code-agent-runs.js\";\n\nexport type { CodeAgentTranscriptEvent } from \"../cli/code-agent-runs.js\";\n\nexport type NormalizedCodeAgentTranscriptItem =\n | NormalizedCodeAgentUserTurn\n | NormalizedCodeAgentAssistantTurn\n | NormalizedCodeAgentToolEvent\n | NormalizedCodeAgentStatusEvent;\n\nexport interface NormalizedCodeAgentTranscript {\n items: NormalizedCodeAgentTranscriptItem[];\n rawEvents: CodeAgentTranscriptEvent[];\n hiddenEvents: CodeAgentTranscriptEvent[];\n}\n\nexport interface NormalizedCodeAgentTranscriptBase {\n id: string;\n createdAt: string;\n updatedAt: string;\n eventIds: string[];\n events: CodeAgentTranscriptEvent[];\n turnIndex: number;\n}\n\nexport interface NormalizedCodeAgentUserTurn extends NormalizedCodeAgentTranscriptBase {\n type: \"user\";\n role: \"user\";\n text: string;\n}\n\nexport interface NormalizedCodeAgentAssistantTurn extends NormalizedCodeAgentTranscriptBase {\n type: \"assistant\";\n role: \"assistant\";\n text: string;\n source: \"system\" | \"runner-stdout\";\n suppressedDuplicateEventIds?: string[];\n}\n\nexport interface NormalizedCodeAgentToolEvent extends NormalizedCodeAgentTranscriptBase {\n type: \"tool\";\n tool?: string;\n label: string;\n state: \"activity\" | \"running\" | \"completed\";\n input?: unknown;\n result?: unknown;\n activities: string[];\n startedAt?: string;\n completedAt?: string;\n}\n\nexport interface NormalizedCodeAgentStatusEvent extends NormalizedCodeAgentTranscriptBase {\n type: \"status\";\n level: \"info\" | \"warning\" | \"error\" | \"approval\";\n text: string;\n statusKind: CodeAgentTranscriptEvent[\"kind\"];\n status?: string;\n phase?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport function normalizeCodeAgentTranscript(\n events: readonly CodeAgentTranscriptEvent[],\n): NormalizedCodeAgentTranscript {\n const items: NormalizedCodeAgentTranscriptItem[] = [];\n const hiddenEvents: CodeAgentTranscriptEvent[] = [];\n const eventOrder = new Map(events.map((event, index) => [event.id, index]));\n let turnIndex = -1;\n\n for (const event of events) {\n const currentTurnIndex = Math.max(turnIndex, 0);\n if (event.kind === \"user\") {\n turnIndex = turnIndex < 0 ? (items.length === 0 ? 0 : 1) : turnIndex + 1;\n items.push(createUserTurn(event, turnIndex));\n continue;\n }\n\n const assistantSource = assistantTextSource(event);\n if (assistantSource) {\n const text = assistantTextForEvent(event, assistantSource);\n if (!text) {\n hiddenEvents.push(event);\n continue;\n }\n const previous = items.at(-1);\n if (\n previous?.type === \"assistant\" &&\n previous.source === assistantSource &&\n previous.turnIndex === currentTurnIndex\n ) {\n appendAssistantChunk(previous, event, text);\n } else {\n items.push(\n createAssistantTurn(event, assistantSource, currentTurnIndex, text),\n );\n }\n continue;\n }\n\n const toolType = toolEventType(event);\n if (toolType) {\n appendToolEvent(items, event, toolType, currentTurnIndex);\n continue;\n }\n\n if (shouldShowStatusEvent(event)) {\n items.push(createStatusEvent(event, currentTurnIndex));\n } else {\n hiddenEvents.push(event);\n }\n }\n\n const dedupedItems = suppressDuplicateFinalAssistantText(items, hiddenEvents);\n hiddenEvents.sort(\n (a, b) => (eventOrder.get(a.id) ?? 0) - (eventOrder.get(b.id) ?? 0),\n );\n\n return {\n items: dedupedItems,\n rawEvents: [...events],\n hiddenEvents,\n };\n}\n\nfunction createUserTurn(\n event: CodeAgentTranscriptEvent,\n turnIndex: number,\n): NormalizedCodeAgentUserTurn {\n return {\n type: \"user\",\n role: \"user\",\n id: event.id,\n text: event.message,\n createdAt: event.createdAt,\n updatedAt: event.createdAt,\n eventIds: [event.id],\n events: [event],\n turnIndex,\n };\n}\n\nfunction createAssistantTurn(\n event: CodeAgentTranscriptEvent,\n source: NormalizedCodeAgentAssistantTurn[\"source\"],\n turnIndex: number,\n text: string,\n): NormalizedCodeAgentAssistantTurn {\n return {\n type: \"assistant\",\n role: \"assistant\",\n id: event.id,\n text,\n source,\n createdAt: event.createdAt,\n updatedAt: event.createdAt,\n eventIds: [event.id],\n events: [event],\n turnIndex,\n };\n}\n\nfunction appendAssistantChunk(\n item: NormalizedCodeAgentAssistantTurn,\n event: CodeAgentTranscriptEvent,\n text: string,\n): void {\n item.text = shouldAppendAssistantChunkExactly(item, event)\n ? `${item.text}${text}`\n : joinAssistantChunks(item.text, text);\n item.updatedAt = event.createdAt;\n item.eventIds.push(event.id);\n item.events.push(event);\n}\n\nfunction createStatusEvent(\n event: CodeAgentTranscriptEvent,\n turnIndex: number,\n): NormalizedCodeAgentStatusEvent {\n const metadata = event.metadata;\n return {\n type: \"status\",\n id: event.id,\n text: event.message,\n level: statusEventLevel(event),\n statusKind: event.kind,\n status: stringMetadata(metadata, \"status\"),\n phase: stringMetadata(metadata, \"phase\"),\n metadata,\n createdAt: event.createdAt,\n updatedAt: event.createdAt,\n eventIds: [event.id],\n events: [event],\n turnIndex,\n };\n}\n\nfunction appendToolEvent(\n items: NormalizedCodeAgentTranscriptItem[],\n event: CodeAgentTranscriptEvent,\n toolType: \"activity\" | \"tool_done\" | \"tool_start\",\n turnIndex: number,\n): void {\n const tool = stringMetadata(event.metadata, \"tool\");\n const item = findOpenToolEvent(items, tool, turnIndex);\n\n if (!item) {\n items.push(createToolEvent(event, toolType, turnIndex));\n return;\n }\n\n item.updatedAt = event.createdAt;\n item.eventIds.push(event.id);\n item.events.push(event);\n\n if (toolType === \"activity\") {\n item.activities.push(event.message);\n if (item.state === \"activity\") item.label = event.message;\n return;\n }\n\n if (toolType === \"tool_start\") {\n const wasActivity = item.state === \"activity\";\n item.state = \"running\";\n item.startedAt = item.startedAt ?? event.createdAt;\n if (hasMetadataKey(event.metadata, \"input\")) {\n item.input = event.metadata?.input;\n }\n if (wasActivity || item.label === item.activities.at(-1)) {\n item.label = event.message;\n }\n return;\n }\n\n item.state = \"completed\";\n item.completedAt = event.createdAt;\n if (hasMetadataKey(event.metadata, \"result\")) {\n item.result = event.metadata?.result;\n }\n}\n\nfunction createToolEvent(\n event: CodeAgentTranscriptEvent,\n toolType: \"activity\" | \"tool_done\" | \"tool_start\",\n turnIndex: number,\n): NormalizedCodeAgentToolEvent {\n const metadata = event.metadata;\n const state =\n toolType === \"tool_done\"\n ? \"completed\"\n : toolType === \"tool_start\"\n ? \"running\"\n : \"activity\";\n return {\n type: \"tool\",\n id: event.id,\n tool: stringMetadata(metadata, \"tool\"),\n label: event.message,\n state,\n input: hasMetadataKey(metadata, \"input\") ? metadata?.input : undefined,\n result: hasMetadataKey(metadata, \"result\") ? metadata?.result : undefined,\n activities: toolType === \"activity\" ? [event.message] : [],\n startedAt: toolType === \"tool_start\" ? event.createdAt : undefined,\n completedAt: toolType === \"tool_done\" ? event.createdAt : undefined,\n createdAt: event.createdAt,\n updatedAt: event.createdAt,\n eventIds: [event.id],\n events: [event],\n turnIndex,\n };\n}\n\nfunction findOpenToolEvent(\n items: readonly NormalizedCodeAgentTranscriptItem[],\n tool: string | undefined,\n turnIndex: number,\n): NormalizedCodeAgentToolEvent | null {\n for (let index = items.length - 1; index >= 0; index -= 1) {\n const item = items[index];\n if (item.type !== \"tool\") continue;\n if (item.turnIndex !== turnIndex) continue;\n if (item.state === \"completed\") continue;\n if (tool && item.tool !== tool) continue;\n if (!tool && item.tool) continue;\n return item;\n }\n return null;\n}\n\nfunction suppressDuplicateFinalAssistantText(\n items: readonly NormalizedCodeAgentTranscriptItem[],\n hiddenEvents: CodeAgentTranscriptEvent[],\n): NormalizedCodeAgentTranscriptItem[] {\n const result: NormalizedCodeAgentTranscriptItem[] = [];\n\n for (const item of items) {\n if (item.type !== \"assistant\" || item.source !== \"system\") {\n result.push(item);\n continue;\n }\n\n const stdoutItems = result.filter(\n (candidate): candidate is NormalizedCodeAgentAssistantTurn =>\n candidate.type === \"assistant\" &&\n candidate.source === \"runner-stdout\" &&\n candidate.turnIndex === item.turnIndex,\n );\n if (\n stdoutItems.length === 0 ||\n !isSameAssistantText(\n stdoutItems.map((candidate) => candidate.text).join(\" \"),\n item.text,\n )\n ) {\n result.push(item);\n continue;\n }\n\n hiddenEvents.push(...item.events);\n const target =\n stdoutItems.length === 1 ? stdoutItems[0] : stdoutItems.at(-1);\n if (!target) continue;\n if (stdoutItems.length === 1) {\n target.text = item.text;\n target.updatedAt = item.updatedAt;\n }\n target.eventIds.push(...item.eventIds);\n target.events.push(...item.events);\n target.suppressedDuplicateEventIds = [\n ...(target.suppressedDuplicateEventIds ?? []),\n ...item.eventIds,\n ];\n }\n\n return result;\n}\n\nfunction shouldShowStatusEvent(event: CodeAgentTranscriptEvent): boolean {\n if (event.kind === \"artifact\" || event.kind === \"note\") return true;\n if (event.kind !== \"status\") return false;\n if (isLowSignalLifecycleEvent(event)) return false;\n return true;\n}\n\nfunction isLowSignalLifecycleEvent(event: CodeAgentTranscriptEvent): boolean {\n const metadata = event.metadata;\n const type = stringMetadata(metadata, \"type\");\n if (type === \"mcp-tools-connected\") return true;\n if (statusEventLevel(event) !== \"info\") return false;\n\n const status = stringMetadata(metadata, \"status\");\n const phase = stringMetadata(metadata, \"phase\");\n if (status === \"queued\" || status === \"running\" || status === \"completed\") {\n return true;\n }\n if (\n phase === \"queued\" ||\n phase === \"starting\" ||\n phase === \"executing\" ||\n phase === \"follow-up\" ||\n phase === \"complete\"\n ) {\n return true;\n }\n\n return LOW_SIGNAL_STATUS_MESSAGES.some((pattern) =>\n pattern.test(event.message),\n );\n}\n\nconst LOW_SIGNAL_STATUS_MESSAGES = [\n /^Agent-Native Code run started\\.?$/i,\n /^Agent-Native Code run completed\\.?$/i,\n /^Agent-Native Code process exited\\.?$/i,\n /^Starting local Agent-Native Code execution\\.?$/i,\n /^Remote Agent-Native Code run queued\\.?$/i,\n /^Connected \\d+ MCP tools? for this run\\.?$/i,\n];\n\nfunction statusEventLevel(\n event: CodeAgentTranscriptEvent,\n): NormalizedCodeAgentStatusEvent[\"level\"] {\n const metadata = event.metadata;\n const status = stringMetadata(metadata, \"status\");\n const phase = stringMetadata(metadata, \"phase\");\n const source = stringMetadata(metadata, \"source\");\n const type = stringMetadata(metadata, \"type\");\n\n if (\n status === \"needs-approval\" ||\n Boolean(metadata?.pendingApproval) ||\n Boolean(metadata?.pendingApprovalId) ||\n Boolean(metadata?.approvalId) ||\n phase?.includes(\"approval\") ||\n /\\bapproval\\b/i.test(event.message)\n ) {\n return \"approval\";\n }\n\n if (\n event.kind === \"status\" &&\n (status === \"errored\" ||\n type === \"error\" ||\n type?.endsWith(\"-error\") ||\n Boolean(metadata?.failed) ||\n typeof metadata?.errorCode === \"string\" ||\n source === \"runner-stderr\")\n ) {\n return \"error\";\n }\n\n if (\n status === \"paused\" ||\n phase === \"missing-credentials\" ||\n phase === \"stopped\" ||\n /\\b(missing|stopped|unavailable|denied)\\b/i.test(event.message)\n ) {\n return \"warning\";\n }\n\n return \"info\";\n}\n\nfunction assistantTextSource(\n event: CodeAgentTranscriptEvent,\n): NormalizedCodeAgentAssistantTurn[\"source\"] | null {\n const source = stringMetadata(event.metadata, \"source\");\n const type = stringMetadata(event.metadata, \"type\");\n if (type === \"assistant_delta\") {\n return \"runner-stdout\";\n }\n if (event.kind === \"status\" && source === \"runner-stdout\") {\n return \"runner-stdout\";\n }\n if (event.kind === \"system\" || event.metadata?.role === \"assistant\") {\n return \"system\";\n }\n return null;\n}\n\nfunction shouldAppendAssistantChunkExactly(\n item: NormalizedCodeAgentAssistantTurn,\n event: CodeAgentTranscriptEvent,\n): boolean {\n return (\n item.source === \"runner-stdout\" &&\n (isAssistantDeltaEvent(event) || item.events.some(isAssistantDeltaEvent))\n );\n}\n\nfunction isAssistantDeltaEvent(event: CodeAgentTranscriptEvent): boolean {\n return stringMetadata(event.metadata, \"type\") === \"assistant_delta\";\n}\n\nfunction assistantTextForEvent(\n event: CodeAgentTranscriptEvent,\n source: NormalizedCodeAgentAssistantTurn[\"source\"],\n): string {\n if (source === \"runner-stdout\") return stripRunnerDiagnostics(event.message);\n return event.message;\n}\n\nfunction stripRunnerDiagnostics(value: string): string {\n return value\n .replace(RUNNER_DIAGNOSTIC_LINE_PATTERNS.engineDetect, \"\")\n .replace(RUNNER_DIAGNOSTIC_LINE_PATTERNS.builderEngine, \"\");\n}\n\nconst RUNNER_DIAGNOSTIC_LINE_PATTERNS = {\n engineDetect: /^\\[engine-detect\\][^\\r\\n]*(?:\\r?\\n|$)/gm,\n builderEngine: /^\\[builder-engine\\]\\s*[←→][^\\r\\n]*(?:\\r?\\n|$)/gm,\n};\n\nfunction toolEventType(\n event: CodeAgentTranscriptEvent,\n): \"activity\" | \"tool_done\" | \"tool_start\" | null {\n if (event.kind !== \"status\") return null;\n const type = stringMetadata(event.metadata, \"type\");\n if (type === \"activity\" || type === \"tool_done\" || type === \"tool_start\") {\n return type;\n }\n return null;\n}\n\nfunction joinAssistantChunks(previous: string, next: string): string {\n if (!previous) return next;\n if (!next) return previous;\n if (/\\s$/.test(previous) || /^\\s/.test(next)) return `${previous}${next}`;\n if (/^[.,!?;:)\\]}'\"`]/.test(next)) return `${previous}${next}`;\n if (/[(\\[{'\"`]$/.test(previous)) return `${previous}${next}`;\n return `${previous} ${next}`;\n}\n\nfunction canonicalText(value: string): string {\n return value.replace(/\\s+/g, \" \").trim();\n}\n\nfunction isSameAssistantText(left: string, right: string): boolean {\n if (canonicalText(left) === canonicalText(right)) return true;\n return compactText(left) === compactText(right);\n}\n\nfunction compactText(value: string): string {\n return canonicalText(value).replace(/\\s+/g, \"\");\n}\n\nfunction stringMetadata(\n metadata: Record<string, unknown> | undefined,\n key: string,\n): string | undefined {\n const value = metadata?.[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction hasMetadataKey(\n metadata: Record<string, unknown> | undefined,\n key: string,\n): boolean {\n return (\n Boolean(metadata) && Object.prototype.hasOwnProperty.call(metadata, key)\n );\n}\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ActionEntry } from "../agent/production-agent.js";
|
|
2
|
+
export interface CodingCommandResult {
|
|
3
|
+
code: number | null;
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
timedOut: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface CreateCodingToolRegistryOptions {
|
|
9
|
+
cwd?: string;
|
|
10
|
+
restrictToCwd?: boolean;
|
|
11
|
+
commandTimeoutMs?: number;
|
|
12
|
+
maxOutputChars?: number;
|
|
13
|
+
maxFileReadChars?: number;
|
|
14
|
+
bashThrowsOnNonZero?: boolean;
|
|
15
|
+
canWrite?: (toolName: "edit" | "write") => string | null;
|
|
16
|
+
beforeBash?: (input: {
|
|
17
|
+
command: string;
|
|
18
|
+
cwd: string;
|
|
19
|
+
timeoutMs: number;
|
|
20
|
+
}) => string | null | Promise<string | null>;
|
|
21
|
+
}
|
|
22
|
+
export declare function createCodingToolRegistry(options?: CreateCodingToolRegistryOptions): Record<"bash" | "read" | "edit" | "write", ActionEntry>;
|
|
23
|
+
export declare function runCodingCommand(command: string, cwd: string, timeoutMs: number, options?: {
|
|
24
|
+
stdin?: string;
|
|
25
|
+
}): Promise<CodingCommandResult>;
|
|
26
|
+
export declare function formatCodingCommandResult(result: CodingCommandResult, maxChars?: number, options?: {
|
|
27
|
+
omitEmptyExitCode?: boolean;
|
|
28
|
+
}): string;
|
|
29
|
+
export declare function truncateCodingOutput(value: string, max: number): string;
|
|
30
|
+
export declare function isReadOnlyShellCommand(command: string): boolean;
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/coding-tools/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,+BAA+B;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,KAAK,MAAM,GAAG,IAAI,CAAC;IACzD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9C;AAcD,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC,GAC5C,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,WAAW,CAAC,CA+OzD;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CA4B9B;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,SAA2B,EACnC,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5C,MAAM,CAUR;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAqC/D"}
|