@agimon-ai/doompi-file-edit 0.0.1-alpha.24 → 0.0.1-alpha.26

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.
@@ -1,2 +1,2 @@
1
- const e=require("../../container/index.cjs");let t=require("@agimon-ai/doompi-extension-contracts/child-process"),n=require("@agimon-ai/doompi-telemetry"),r=require("@agimon-ai/doompi-ui/leader"),i=require("@deepseek-ai/cordis");const a=`file-edits`,o=`@agimon-ai/doompi-file-edit`,s={source:o,bindings:[{id:`editor.files`,path:[{key:`e`,label:`extension`,order:50},{key:`f`,label:`files`,detail:`session edits`}],command:{name:a}}]};function c(r,i){r.effect(function*(){let{paths:r,timeline:s,editTracker:c,workflow:l}=e.createFileEditContainer(),u=(0,n.createDoomTelemetry)({serviceName:`doom-file-edit`,packageName:o,env:process.env,enableLogs:!0,enableTraces:!0}),d=new Map,f=!0,p=0;yield async()=>{f=!1,p+=1,d.clear();try{process.env[t.SUBAGENT_CHILD_ENV]||await s.clear(),await u.recordEvent(`doom_file_edit.timeline_finished`,{outcome:`closed`})}finally{await u.shutdown()}},i.registerCommand(a,{description:`Review files edited in this session`,handler:async(e,t)=>{if(f){if(!t.hasUI){t.ui.notify(`/file-edits requires interactive mode`,`error`);return}await l.open(t)}}}),i.on(`session_start`,(e,t)=>{if(!f)return;p+=1,d.clear();let n=r.sessionKey(t.sessionManager.getSessionId());s.initialize(r.timelinePath(t.cwd,n)),u.recordEvent(`doom_file_edit.timeline_started`,{outcome:`initialized`})}),i.on(`tool_execution_start`,async(e,t)=>{if(!f)return;let n=p;if(d.set(e.toolCallId,Date.now()),await c.start(e.toolCallId,e.toolName,e.args,t.cwd),!f||n!==p){d.delete(e.toolCallId);return}u.recordEvent(`doom_file_edit.edit_started`,{"tool.name":e.toolName})}),i.on(`tool_execution_end`,async e=>{if(!f)return;let t=d.get(e.toolCallId);d.delete(e.toolCallId),await c.end(e.toolCallId,e.isError),f&&u.recordEvent(`doom_file_edit.edit_finished`,{"tool.name":e.toolName,"tool.result.error":e.isError,...t===void 0?{}:{duration_ms:Date.now()-t},outcome:e.isError?`failed`:`completed`})})},`${o}/runtime`)}async function l(e){let t=new i.Context,n,a=()=>(n??=t.fiber.dispose(),n);try{c(t,e),t.effect(()=>(0,r.registerDoomLeaderContribution)(e,s),`${o}/leader`)}catch(e){throw await a(),e}e.on(`session_shutdown`,a)}exports.FILE_EDIT_LEADER_CONTRIBUTION=s,exports.fileEditExtension=l,exports.installFileEditRuntime=c;
1
+ const e=require("../../container/index.cjs");let t=require("@agimon-ai/doompi-extension-contracts/child-process"),n=require("@agimon-ai/doompi-extension-contracts/cordis-host"),r=require("@agimon-ai/doompi-extension-contracts/ui-hub"),i=require("@agimon-ai/doompi-telemetry");const a=`file-edits`,o=`@agimon-ai/doompi-file-edit`,s={source:o,bindings:[{id:`editor.files`,path:[{key:`e`,label:`extension`,order:50},{key:`f`,label:`files`,detail:`session edits`}],command:{name:a}}]};function c(n,r){n.effect(function*(){let{paths:n,timeline:s,editTracker:c,workflow:l}=e.createFileEditContainer(),u=(0,i.createDoomTelemetry)({serviceName:`doom-file-edit`,packageName:o,env:process.env,enableLogs:!0,enableTraces:!0}),d=new Map,f=!0,p=0;yield async()=>{f=!1,p+=1,d.clear();try{process.env[t.SUBAGENT_CHILD_ENV]||await s.clear(),await u.recordEvent(`doom_file_edit.timeline_finished`,{outcome:`closed`})}finally{await u.shutdown()}},r.registerCommand(a,{description:`Review files edited in this session`,handler:async(e,t)=>{if(f){if(!t.hasUI){t.ui.notify(`/file-edits requires interactive mode`,`error`);return}await l.open(t)}}}),r.on(`session_start`,(e,t)=>{if(!f)return;p+=1,d.clear();let r=n.sessionKey(t.sessionManager.getSessionId());s.initialize(n.timelinePath(t.cwd,r)),u.recordEvent(`doom_file_edit.timeline_started`,{outcome:`initialized`})}),r.on(`tool_execution_start`,async(e,t)=>{if(!f)return;let n=p;if(d.set(e.toolCallId,Date.now()),await c.start(e.toolCallId,e.toolName,e.args,t.cwd),!f||n!==p){d.delete(e.toolCallId);return}u.recordEvent(`doom_file_edit.edit_started`,{"tool.name":e.toolName})}),r.on(`tool_execution_end`,async e=>{if(!f)return;let t=d.get(e.toolCallId);d.delete(e.toolCallId),await c.end(e.toolCallId,e.isError),f&&u.recordEvent(`doom_file_edit.edit_finished`,{"tool.name":e.toolName,"tool.result.error":e.isError,...t===void 0?{}:{duration_ms:Date.now()-t},outcome:e.isError?`failed`:`completed`})})},`${o}/runtime`)}async function l(e){let t=await(0,n.connectDoomCordisHost)(e,o),r=t.root.plugin(u,{pi:e});try{await r}catch(e){try{await r.dispose()}finally{await t.dispose()}throw e}let i;e.on(`session_shutdown`,()=>i??=(async()=>{try{await r.dispose()}finally{await t.dispose()}})())}function u(e,t){c(e,t.pi),e.inject([r.DOOM_UI_HUB_SERVICE],e=>{let t=(0,r.requireDoomUiHub)(e).registerLeader(s);return()=>t.dispose()})}exports.FILE_EDIT_LEADER_CONTRIBUTION=s,exports.fileEditExtension=l,exports.installFileEditRuntime=c;
2
2
  //# sourceMappingURL=extension.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension.cjs","names":["createFileEditContainer","createDoomTelemetry","SUBAGENT_CHILD_ENV","Context","registerDoomLeaderContribution"],"sources":["../../../src/adapters/pi/extension.ts"],"sourcesContent":["import { SUBAGENT_CHILD_ENV } from '@agimon-ai/doompi-extension-contracts/child-process';\nimport { createDoomTelemetry, type DoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { type DoomLeaderContribution, registerDoomLeaderContribution } from '@agimon-ai/doompi-ui/leader';\nimport { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { createFileEditContainer } from '../../container/index.ts';\n\nconst FILES_COMMAND = 'file-edits';\nconst PACKAGE_SOURCE = '@agimon-ai/doompi-file-edit';\n\nexport const FILE_EDIT_LEADER_CONTRIBUTION = {\n source: PACKAGE_SOURCE,\n bindings: [\n {\n id: 'editor.files',\n path: [\n { key: 'e', label: 'extension', order: 50 },\n { key: 'f', label: 'files', detail: 'session edits' },\n ],\n command: { name: FILES_COMMAND },\n },\n ],\n} as const;\n\n/** Install File Edit resources into one package-local Cordis root. */\nexport function installFileEditRuntime(cordis: Context, pi: ExtensionAPI): void {\n cordis.effect(function* () {\n const { paths, timeline, editTracker: tracker, workflow } = createFileEditContainer();\n const telemetry: DoomTelemetry = createDoomTelemetry({\n serviceName: 'doom-file-edit',\n packageName: PACKAGE_SOURCE,\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const toolStartedAt = new Map<string, number>();\n let active = true;\n let sessionGeneration = 0;\n\n yield async () => {\n active = false;\n sessionGeneration += 1;\n toolStartedAt.clear();\n try {\n if (!process.env[SUBAGENT_CHILD_ENV]) await timeline.clear();\n await telemetry.recordEvent('doom_file_edit.timeline_finished', { outcome: 'closed' });\n } finally {\n await telemetry.shutdown();\n }\n };\n\n pi.registerCommand(FILES_COMMAND, {\n description: 'Review files edited in this session',\n handler: async (_args, ctx) => {\n if (!active) return;\n if (!ctx.hasUI) {\n ctx.ui.notify('/file-edits requires interactive mode', 'error');\n return;\n }\n await workflow.open(ctx);\n },\n });\n\n pi.on('session_start', (_event, ctx) => {\n if (!active) return;\n sessionGeneration += 1;\n toolStartedAt.clear();\n const sessionKey = paths.sessionKey(ctx.sessionManager.getSessionId());\n timeline.initialize(paths.timelinePath(ctx.cwd, sessionKey));\n void telemetry.recordEvent('doom_file_edit.timeline_started', { outcome: 'initialized' });\n });\n pi.on('tool_execution_start', async (event, ctx) => {\n if (!active) return;\n const ownGeneration = sessionGeneration;\n toolStartedAt.set(event.toolCallId, Date.now());\n await tracker.start(event.toolCallId, event.toolName, event.args, ctx.cwd);\n if (!active || ownGeneration !== sessionGeneration) {\n toolStartedAt.delete(event.toolCallId);\n return;\n }\n void telemetry.recordEvent('doom_file_edit.edit_started', { 'tool.name': event.toolName });\n });\n pi.on('tool_execution_end', async (event) => {\n if (!active) return;\n const startedAt = toolStartedAt.get(event.toolCallId);\n toolStartedAt.delete(event.toolCallId);\n await tracker.end(event.toolCallId, event.isError);\n if (!active) return;\n void telemetry.recordEvent('doom_file_edit.edit_finished', {\n 'tool.name': event.toolName,\n 'tool.result.error': event.isError,\n ...(startedAt === undefined ? {} : { duration_ms: Date.now() - startedAt }),\n outcome: event.isError ? 'failed' : 'completed',\n });\n });\n }, `${PACKAGE_SOURCE}/runtime`);\n}\n\n/** The package's single standard Pi factory. */\nexport async function fileEditExtension(pi: ExtensionAPI): Promise<void> {\n const cordis = new Context();\n let disposal: Promise<void> | undefined;\n const dispose = (): Promise<void> => {\n disposal ??= cordis.fiber.dispose();\n return disposal;\n };\n\n try {\n installFileEditRuntime(cordis, pi);\n cordis.effect(\n () => registerDoomLeaderContribution(pi, FILE_EDIT_LEADER_CONTRIBUTION satisfies DoomLeaderContribution),\n `${PACKAGE_SOURCE}/leader`,\n );\n } catch (error) {\n await dispose();\n throw error;\n }\n\n pi.on('session_shutdown', dispose);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"extension.cjs","names":["createFileEditContainer","createDoomTelemetry","SUBAGENT_CHILD_ENV","connectDoomCordisHost","DOOM_UI_HUB_SERVICE","requireDoomUiHub"],"sources":["../../../src/adapters/pi/extension.ts"],"sourcesContent":["import { SUBAGENT_CHILD_ENV } from '@agimon-ai/doompi-extension-contracts/child-process';\nimport { connectDoomCordisHost } from '@agimon-ai/doompi-extension-contracts/cordis-host';\nimport type { LeaderContribution } from '@agimon-ai/doompi-extension-contracts/leader';\nimport { DOOM_UI_HUB_SERVICE, requireDoomUiHub } from '@agimon-ai/doompi-extension-contracts/ui-hub';\nimport { createDoomTelemetry, type DoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport type { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { createFileEditContainer } from '../../container/index.ts';\n\nconst FILES_COMMAND = 'file-edits';\nconst PACKAGE_SOURCE = '@agimon-ai/doompi-file-edit';\n\nexport const FILE_EDIT_LEADER_CONTRIBUTION = {\n source: PACKAGE_SOURCE,\n bindings: [\n {\n id: 'editor.files',\n path: [\n { key: 'e', label: 'extension', order: 50 },\n { key: 'f', label: 'files', detail: 'session edits' },\n ],\n command: { name: FILES_COMMAND },\n },\n ],\n} as const satisfies LeaderContribution;\n\n/** Install File Edit resources into its host-owned Cordis plugin fiber. */\nexport function installFileEditRuntime(cordis: Context, pi: ExtensionAPI): void {\n cordis.effect(function* () {\n const { paths, timeline, editTracker: tracker, workflow } = createFileEditContainer();\n const telemetry: DoomTelemetry = createDoomTelemetry({\n serviceName: 'doom-file-edit',\n packageName: PACKAGE_SOURCE,\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const toolStartedAt = new Map<string, number>();\n let active = true;\n let sessionGeneration = 0;\n\n yield async () => {\n active = false;\n sessionGeneration += 1;\n toolStartedAt.clear();\n try {\n if (!process.env[SUBAGENT_CHILD_ENV]) await timeline.clear();\n await telemetry.recordEvent('doom_file_edit.timeline_finished', { outcome: 'closed' });\n } finally {\n await telemetry.shutdown();\n }\n };\n\n pi.registerCommand(FILES_COMMAND, {\n description: 'Review files edited in this session',\n handler: async (_args, ctx) => {\n if (!active) return;\n if (!ctx.hasUI) {\n ctx.ui.notify('/file-edits requires interactive mode', 'error');\n return;\n }\n await workflow.open(ctx);\n },\n });\n\n pi.on('session_start', (_event, ctx) => {\n if (!active) return;\n sessionGeneration += 1;\n toolStartedAt.clear();\n const sessionKey = paths.sessionKey(ctx.sessionManager.getSessionId());\n timeline.initialize(paths.timelinePath(ctx.cwd, sessionKey));\n void telemetry.recordEvent('doom_file_edit.timeline_started', { outcome: 'initialized' });\n });\n pi.on('tool_execution_start', async (event, ctx) => {\n if (!active) return;\n const ownGeneration = sessionGeneration;\n toolStartedAt.set(event.toolCallId, Date.now());\n await tracker.start(event.toolCallId, event.toolName, event.args, ctx.cwd);\n if (!active || ownGeneration !== sessionGeneration) {\n toolStartedAt.delete(event.toolCallId);\n return;\n }\n void telemetry.recordEvent('doom_file_edit.edit_started', { 'tool.name': event.toolName });\n });\n pi.on('tool_execution_end', async (event) => {\n if (!active) return;\n const startedAt = toolStartedAt.get(event.toolCallId);\n toolStartedAt.delete(event.toolCallId);\n await tracker.end(event.toolCallId, event.isError);\n if (!active) return;\n void telemetry.recordEvent('doom_file_edit.edit_finished', {\n 'tool.name': event.toolName,\n 'tool.result.error': event.isError,\n ...(startedAt === undefined ? {} : { duration_ms: Date.now() - startedAt }),\n outcome: event.isError ? 'failed' : 'completed',\n });\n });\n }, `${PACKAGE_SOURCE}/runtime`);\n}\n\n/** The package's single standard Pi factory. */\nexport async function fileEditExtension(pi: ExtensionAPI): Promise<void> {\n const connection = await connectDoomCordisHost(pi, PACKAGE_SOURCE);\n const fiber = connection.root.plugin(fileEditPlugin, { pi });\n try {\n await fiber;\n } catch (error) {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n throw error;\n }\n let disposal: Promise<void> | undefined;\n pi.on(\n 'session_shutdown',\n () =>\n (disposal ??= (async () => {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n })()),\n );\n}\n\ninterface FileEditPluginConfig {\n readonly pi: ExtensionAPI;\n}\n\nfunction fileEditPlugin(cordis: Context, config: FileEditPluginConfig): void {\n installFileEditRuntime(cordis, config.pi);\n cordis.inject([DOOM_UI_HUB_SERVICE], (uiContext) => {\n const contribution = requireDoomUiHub(uiContext).registerLeader(FILE_EDIT_LEADER_CONTRIBUTION);\n return () => contribution.dispose();\n });\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.cts","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"mappings":";;;;iBAmGsB,kBAAkB,IAAI,eAAe"}
1
+ {"version":3,"file":"extension.d.cts","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"mappings":";;;;iBAqGsB,kBAAkB,IAAI,eAAe"}
@@ -1,5 +1,5 @@
1
- import { Context } from "@deepseek-ai/cordis";
2
1
  import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
+ import "@deepseek-ai/cordis";
3
3
  //#region src/adapters/pi/extension.d.ts
4
4
  /** The package's single standard Pi factory. */
5
5
  declare function fileEditExtension(pi: ExtensionAPI): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.mts","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"mappings":";;;;iBAmGsB,kBAAkB,IAAI,eAAe"}
1
+ {"version":3,"file":"extension.d.mts","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"mappings":";;;;iBAqGsB,kBAAkB,IAAI,eAAe"}
@@ -1,2 +1,2 @@
1
- import{createFileEditContainer as e}from"../../container/index.mjs";import{SUBAGENT_CHILD_ENV as t}from"@agimon-ai/doompi-extension-contracts/child-process";import{createDoomTelemetry as n}from"@agimon-ai/doompi-telemetry";import{registerDoomLeaderContribution as r}from"@agimon-ai/doompi-ui/leader";import{Context as i}from"@deepseek-ai/cordis";const a=`file-edits`,o=`@agimon-ai/doompi-file-edit`,s={source:o,bindings:[{id:`editor.files`,path:[{key:`e`,label:`extension`,order:50},{key:`f`,label:`files`,detail:`session edits`}],command:{name:a}}]};function c(r,i){r.effect(function*(){let{paths:r,timeline:s,editTracker:c,workflow:l}=e(),u=n({serviceName:`doom-file-edit`,packageName:o,env:process.env,enableLogs:!0,enableTraces:!0}),d=new Map,f=!0,p=0;yield async()=>{f=!1,p+=1,d.clear();try{process.env[t]||await s.clear(),await u.recordEvent(`doom_file_edit.timeline_finished`,{outcome:`closed`})}finally{await u.shutdown()}},i.registerCommand(a,{description:`Review files edited in this session`,handler:async(e,t)=>{if(f){if(!t.hasUI){t.ui.notify(`/file-edits requires interactive mode`,`error`);return}await l.open(t)}}}),i.on(`session_start`,(e,t)=>{if(!f)return;p+=1,d.clear();let n=r.sessionKey(t.sessionManager.getSessionId());s.initialize(r.timelinePath(t.cwd,n)),u.recordEvent(`doom_file_edit.timeline_started`,{outcome:`initialized`})}),i.on(`tool_execution_start`,async(e,t)=>{if(!f)return;let n=p;if(d.set(e.toolCallId,Date.now()),await c.start(e.toolCallId,e.toolName,e.args,t.cwd),!f||n!==p){d.delete(e.toolCallId);return}u.recordEvent(`doom_file_edit.edit_started`,{"tool.name":e.toolName})}),i.on(`tool_execution_end`,async e=>{if(!f)return;let t=d.get(e.toolCallId);d.delete(e.toolCallId),await c.end(e.toolCallId,e.isError),f&&u.recordEvent(`doom_file_edit.edit_finished`,{"tool.name":e.toolName,"tool.result.error":e.isError,...t===void 0?{}:{duration_ms:Date.now()-t},outcome:e.isError?`failed`:`completed`})})},`${o}/runtime`)}async function l(e){let t=new i,n,a=()=>(n??=t.fiber.dispose(),n);try{c(t,e),t.effect(()=>r(e,s),`${o}/leader`)}catch(e){throw await a(),e}e.on(`session_shutdown`,a)}export{s as FILE_EDIT_LEADER_CONTRIBUTION,l as fileEditExtension,c as installFileEditRuntime};
1
+ import{createFileEditContainer as e}from"../../container/index.mjs";import{SUBAGENT_CHILD_ENV as t}from"@agimon-ai/doompi-extension-contracts/child-process";import{connectDoomCordisHost as n}from"@agimon-ai/doompi-extension-contracts/cordis-host";import{DOOM_UI_HUB_SERVICE as r,requireDoomUiHub as i}from"@agimon-ai/doompi-extension-contracts/ui-hub";import{createDoomTelemetry as a}from"@agimon-ai/doompi-telemetry";const o=`file-edits`,s=`@agimon-ai/doompi-file-edit`,c={source:s,bindings:[{id:`editor.files`,path:[{key:`e`,label:`extension`,order:50},{key:`f`,label:`files`,detail:`session edits`}],command:{name:o}}]};function l(n,r){n.effect(function*(){let{paths:n,timeline:i,editTracker:c,workflow:l}=e(),u=a({serviceName:`doom-file-edit`,packageName:s,env:process.env,enableLogs:!0,enableTraces:!0}),d=new Map,f=!0,p=0;yield async()=>{f=!1,p+=1,d.clear();try{process.env[t]||await i.clear(),await u.recordEvent(`doom_file_edit.timeline_finished`,{outcome:`closed`})}finally{await u.shutdown()}},r.registerCommand(o,{description:`Review files edited in this session`,handler:async(e,t)=>{if(f){if(!t.hasUI){t.ui.notify(`/file-edits requires interactive mode`,`error`);return}await l.open(t)}}}),r.on(`session_start`,(e,t)=>{if(!f)return;p+=1,d.clear();let r=n.sessionKey(t.sessionManager.getSessionId());i.initialize(n.timelinePath(t.cwd,r)),u.recordEvent(`doom_file_edit.timeline_started`,{outcome:`initialized`})}),r.on(`tool_execution_start`,async(e,t)=>{if(!f)return;let n=p;if(d.set(e.toolCallId,Date.now()),await c.start(e.toolCallId,e.toolName,e.args,t.cwd),!f||n!==p){d.delete(e.toolCallId);return}u.recordEvent(`doom_file_edit.edit_started`,{"tool.name":e.toolName})}),r.on(`tool_execution_end`,async e=>{if(!f)return;let t=d.get(e.toolCallId);d.delete(e.toolCallId),await c.end(e.toolCallId,e.isError),f&&u.recordEvent(`doom_file_edit.edit_finished`,{"tool.name":e.toolName,"tool.result.error":e.isError,...t===void 0?{}:{duration_ms:Date.now()-t},outcome:e.isError?`failed`:`completed`})})},`${s}/runtime`)}async function u(e){let t=await n(e,s),r=t.root.plugin(d,{pi:e});try{await r}catch(e){try{await r.dispose()}finally{await t.dispose()}throw e}let i;e.on(`session_shutdown`,()=>i??=(async()=>{try{await r.dispose()}finally{await t.dispose()}})())}function d(e,t){l(e,t.pi),e.inject([r],e=>{let t=i(e).registerLeader(c);return()=>t.dispose()})}export{c as FILE_EDIT_LEADER_CONTRIBUTION,u as fileEditExtension,l as installFileEditRuntime};
2
2
  //# sourceMappingURL=extension.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension.mjs","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"sourcesContent":["import { SUBAGENT_CHILD_ENV } from '@agimon-ai/doompi-extension-contracts/child-process';\nimport { createDoomTelemetry, type DoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { type DoomLeaderContribution, registerDoomLeaderContribution } from '@agimon-ai/doompi-ui/leader';\nimport { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { createFileEditContainer } from '../../container/index.ts';\n\nconst FILES_COMMAND = 'file-edits';\nconst PACKAGE_SOURCE = '@agimon-ai/doompi-file-edit';\n\nexport const FILE_EDIT_LEADER_CONTRIBUTION = {\n source: PACKAGE_SOURCE,\n bindings: [\n {\n id: 'editor.files',\n path: [\n { key: 'e', label: 'extension', order: 50 },\n { key: 'f', label: 'files', detail: 'session edits' },\n ],\n command: { name: FILES_COMMAND },\n },\n ],\n} as const;\n\n/** Install File Edit resources into one package-local Cordis root. */\nexport function installFileEditRuntime(cordis: Context, pi: ExtensionAPI): void {\n cordis.effect(function* () {\n const { paths, timeline, editTracker: tracker, workflow } = createFileEditContainer();\n const telemetry: DoomTelemetry = createDoomTelemetry({\n serviceName: 'doom-file-edit',\n packageName: PACKAGE_SOURCE,\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const toolStartedAt = new Map<string, number>();\n let active = true;\n let sessionGeneration = 0;\n\n yield async () => {\n active = false;\n sessionGeneration += 1;\n toolStartedAt.clear();\n try {\n if (!process.env[SUBAGENT_CHILD_ENV]) await timeline.clear();\n await telemetry.recordEvent('doom_file_edit.timeline_finished', { outcome: 'closed' });\n } finally {\n await telemetry.shutdown();\n }\n };\n\n pi.registerCommand(FILES_COMMAND, {\n description: 'Review files edited in this session',\n handler: async (_args, ctx) => {\n if (!active) return;\n if (!ctx.hasUI) {\n ctx.ui.notify('/file-edits requires interactive mode', 'error');\n return;\n }\n await workflow.open(ctx);\n },\n });\n\n pi.on('session_start', (_event, ctx) => {\n if (!active) return;\n sessionGeneration += 1;\n toolStartedAt.clear();\n const sessionKey = paths.sessionKey(ctx.sessionManager.getSessionId());\n timeline.initialize(paths.timelinePath(ctx.cwd, sessionKey));\n void telemetry.recordEvent('doom_file_edit.timeline_started', { outcome: 'initialized' });\n });\n pi.on('tool_execution_start', async (event, ctx) => {\n if (!active) return;\n const ownGeneration = sessionGeneration;\n toolStartedAt.set(event.toolCallId, Date.now());\n await tracker.start(event.toolCallId, event.toolName, event.args, ctx.cwd);\n if (!active || ownGeneration !== sessionGeneration) {\n toolStartedAt.delete(event.toolCallId);\n return;\n }\n void telemetry.recordEvent('doom_file_edit.edit_started', { 'tool.name': event.toolName });\n });\n pi.on('tool_execution_end', async (event) => {\n if (!active) return;\n const startedAt = toolStartedAt.get(event.toolCallId);\n toolStartedAt.delete(event.toolCallId);\n await tracker.end(event.toolCallId, event.isError);\n if (!active) return;\n void telemetry.recordEvent('doom_file_edit.edit_finished', {\n 'tool.name': event.toolName,\n 'tool.result.error': event.isError,\n ...(startedAt === undefined ? {} : { duration_ms: Date.now() - startedAt }),\n outcome: event.isError ? 'failed' : 'completed',\n });\n });\n }, `${PACKAGE_SOURCE}/runtime`);\n}\n\n/** The package's single standard Pi factory. */\nexport async function fileEditExtension(pi: ExtensionAPI): Promise<void> {\n const cordis = new Context();\n let disposal: Promise<void> | undefined;\n const dispose = (): Promise<void> => {\n disposal ??= cordis.fiber.dispose();\n return disposal;\n };\n\n try {\n installFileEditRuntime(cordis, pi);\n cordis.effect(\n () => registerDoomLeaderContribution(pi, FILE_EDIT_LEADER_CONTRIBUTION satisfies DoomLeaderContribution),\n `${PACKAGE_SOURCE}/leader`,\n );\n } catch (error) {\n await dispose();\n throw error;\n }\n\n pi.on('session_shutdown', dispose);\n}\n"],"mappings":"0VAOA,MAAM,EAAgB,aAChB,EAAiB,8BAEV,EAAgC,CAC3C,OAAQ,EACR,SAAU,CACR,CACE,GAAI,eACJ,KAAM,CACJ,CAAE,IAAK,IAAK,MAAO,YAAa,MAAO,EAAG,EAC1C,CAAE,IAAK,IAAK,MAAO,QAAS,OAAQ,eAAgB,CACtD,EACA,QAAS,CAAE,KAAM,CAAc,CACjC,CACF,CACF,EAGA,SAAgB,EAAuB,EAAiB,EAAwB,CAC9E,EAAO,OAAO,WAAa,CACzB,GAAM,CAAE,QAAO,WAAU,YAAa,EAAS,YAAa,EAAwB,EAC9E,EAA2B,EAAoB,CACnD,YAAa,iBACb,YAAa,EACb,IAAK,QAAQ,IACb,WAAY,GACZ,aAAc,EAChB,CAAC,EACK,EAAgB,IAAI,IACtB,EAAS,GACT,EAAoB,EAExB,MAAM,SAAY,CAChB,EAAS,GACT,GAAqB,EACrB,EAAc,MAAM,EACpB,GAAI,CACG,QAAQ,IAAI,IAAqB,MAAM,EAAS,MAAM,EAC3D,MAAM,EAAU,YAAY,mCAAoC,CAAE,QAAS,QAAS,CAAC,CACvF,QAAU,CACR,MAAM,EAAU,SAAS,CAC3B,CACF,EAEA,EAAG,gBAAgB,EAAe,CAChC,YAAa,sCACb,QAAS,MAAO,EAAO,IAAQ,CACxB,KACL,IAAI,CAAC,EAAI,MAAO,CACd,EAAI,GAAG,OAAO,wCAAyC,OAAO,EAC9D,MACF,CACA,MAAM,EAAS,KAAK,CAAG,CADvB,CAEF,CACF,CAAC,EAED,EAAG,GAAG,iBAAkB,EAAQ,IAAQ,CACtC,GAAI,CAAC,EAAQ,OACb,GAAqB,EACrB,EAAc,MAAM,EACpB,IAAM,EAAa,EAAM,WAAW,EAAI,eAAe,aAAa,CAAC,EACrE,EAAS,WAAW,EAAM,aAAa,EAAI,IAAK,CAAU,CAAC,EAC3D,EAAe,YAAY,kCAAmC,CAAE,QAAS,aAAc,CAAC,CAC1F,CAAC,EACD,EAAG,GAAG,uBAAwB,MAAO,EAAO,IAAQ,CAClD,GAAI,CAAC,EAAQ,OACb,IAAM,EAAgB,EAGtB,GAFA,EAAc,IAAI,EAAM,WAAY,KAAK,IAAI,CAAC,EAC9C,MAAM,EAAQ,MAAM,EAAM,WAAY,EAAM,SAAU,EAAM,KAAM,EAAI,GAAG,EACrE,CAAC,GAAU,IAAkB,EAAmB,CAClD,EAAc,OAAO,EAAM,UAAU,EACrC,MACF,CACA,EAAe,YAAY,8BAA+B,CAAE,YAAa,EAAM,QAAS,CAAC,CAC3F,CAAC,EACD,EAAG,GAAG,qBAAsB,KAAO,IAAU,CAC3C,GAAI,CAAC,EAAQ,OACb,IAAM,EAAY,EAAc,IAAI,EAAM,UAAU,EACpD,EAAc,OAAO,EAAM,UAAU,EACrC,MAAM,EAAQ,IAAI,EAAM,WAAY,EAAM,OAAO,EAC5C,GACL,EAAe,YAAY,+BAAgC,CACzD,YAAa,EAAM,SACnB,oBAAqB,EAAM,QAC3B,GAAI,IAAc,IAAA,GAAY,CAAC,EAAI,CAAE,YAAa,KAAK,IAAI,EAAI,CAAU,EACzE,QAAS,EAAM,QAAU,SAAW,WACtC,CAAC,CACH,CAAC,CACH,EAAG,GAAG,EAAe,SAAS,CAChC,CAGA,eAAsB,EAAkB,EAAiC,CACvE,IAAM,EAAS,IAAI,EACf,EACE,OACJ,IAAa,EAAO,MAAM,QAAQ,EAC3B,GAGT,GAAI,CACF,EAAuB,EAAQ,CAAE,EACjC,EAAO,WACC,EAA+B,EAAI,CAA8D,EACvG,GAAG,EAAe,QACpB,CACF,OAAS,EAAO,CAEd,MADA,MAAM,EAAQ,EACR,CACR,CAEA,EAAG,GAAG,mBAAoB,CAAO,CACnC"}
1
+ {"version":3,"file":"extension.mjs","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"sourcesContent":["import { SUBAGENT_CHILD_ENV } from '@agimon-ai/doompi-extension-contracts/child-process';\nimport { connectDoomCordisHost } from '@agimon-ai/doompi-extension-contracts/cordis-host';\nimport type { LeaderContribution } from '@agimon-ai/doompi-extension-contracts/leader';\nimport { DOOM_UI_HUB_SERVICE, requireDoomUiHub } from '@agimon-ai/doompi-extension-contracts/ui-hub';\nimport { createDoomTelemetry, type DoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport type { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { createFileEditContainer } from '../../container/index.ts';\n\nconst FILES_COMMAND = 'file-edits';\nconst PACKAGE_SOURCE = '@agimon-ai/doompi-file-edit';\n\nexport const FILE_EDIT_LEADER_CONTRIBUTION = {\n source: PACKAGE_SOURCE,\n bindings: [\n {\n id: 'editor.files',\n path: [\n { key: 'e', label: 'extension', order: 50 },\n { key: 'f', label: 'files', detail: 'session edits' },\n ],\n command: { name: FILES_COMMAND },\n },\n ],\n} as const satisfies LeaderContribution;\n\n/** Install File Edit resources into its host-owned Cordis plugin fiber. */\nexport function installFileEditRuntime(cordis: Context, pi: ExtensionAPI): void {\n cordis.effect(function* () {\n const { paths, timeline, editTracker: tracker, workflow } = createFileEditContainer();\n const telemetry: DoomTelemetry = createDoomTelemetry({\n serviceName: 'doom-file-edit',\n packageName: PACKAGE_SOURCE,\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const toolStartedAt = new Map<string, number>();\n let active = true;\n let sessionGeneration = 0;\n\n yield async () => {\n active = false;\n sessionGeneration += 1;\n toolStartedAt.clear();\n try {\n if (!process.env[SUBAGENT_CHILD_ENV]) await timeline.clear();\n await telemetry.recordEvent('doom_file_edit.timeline_finished', { outcome: 'closed' });\n } finally {\n await telemetry.shutdown();\n }\n };\n\n pi.registerCommand(FILES_COMMAND, {\n description: 'Review files edited in this session',\n handler: async (_args, ctx) => {\n if (!active) return;\n if (!ctx.hasUI) {\n ctx.ui.notify('/file-edits requires interactive mode', 'error');\n return;\n }\n await workflow.open(ctx);\n },\n });\n\n pi.on('session_start', (_event, ctx) => {\n if (!active) return;\n sessionGeneration += 1;\n toolStartedAt.clear();\n const sessionKey = paths.sessionKey(ctx.sessionManager.getSessionId());\n timeline.initialize(paths.timelinePath(ctx.cwd, sessionKey));\n void telemetry.recordEvent('doom_file_edit.timeline_started', { outcome: 'initialized' });\n });\n pi.on('tool_execution_start', async (event, ctx) => {\n if (!active) return;\n const ownGeneration = sessionGeneration;\n toolStartedAt.set(event.toolCallId, Date.now());\n await tracker.start(event.toolCallId, event.toolName, event.args, ctx.cwd);\n if (!active || ownGeneration !== sessionGeneration) {\n toolStartedAt.delete(event.toolCallId);\n return;\n }\n void telemetry.recordEvent('doom_file_edit.edit_started', { 'tool.name': event.toolName });\n });\n pi.on('tool_execution_end', async (event) => {\n if (!active) return;\n const startedAt = toolStartedAt.get(event.toolCallId);\n toolStartedAt.delete(event.toolCallId);\n await tracker.end(event.toolCallId, event.isError);\n if (!active) return;\n void telemetry.recordEvent('doom_file_edit.edit_finished', {\n 'tool.name': event.toolName,\n 'tool.result.error': event.isError,\n ...(startedAt === undefined ? {} : { duration_ms: Date.now() - startedAt }),\n outcome: event.isError ? 'failed' : 'completed',\n });\n });\n }, `${PACKAGE_SOURCE}/runtime`);\n}\n\n/** The package's single standard Pi factory. */\nexport async function fileEditExtension(pi: ExtensionAPI): Promise<void> {\n const connection = await connectDoomCordisHost(pi, PACKAGE_SOURCE);\n const fiber = connection.root.plugin(fileEditPlugin, { pi });\n try {\n await fiber;\n } catch (error) {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n throw error;\n }\n let disposal: Promise<void> | undefined;\n pi.on(\n 'session_shutdown',\n () =>\n (disposal ??= (async () => {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n })()),\n );\n}\n\ninterface FileEditPluginConfig {\n readonly pi: ExtensionAPI;\n}\n\nfunction fileEditPlugin(cordis: Context, config: FileEditPluginConfig): void {\n installFileEditRuntime(cordis, config.pi);\n cordis.inject([DOOM_UI_HUB_SERVICE], (uiContext) => {\n const contribution = requireDoomUiHub(uiContext).registerLeader(FILE_EDIT_LEADER_CONTRIBUTION);\n return () => contribution.dispose();\n });\n}\n"],"mappings":"kaASA,MAAM,EAAgB,aAChB,EAAiB,8BAEV,EAAgC,CAC3C,OAAQ,EACR,SAAU,CACR,CACE,GAAI,eACJ,KAAM,CACJ,CAAE,IAAK,IAAK,MAAO,YAAa,MAAO,EAAG,EAC1C,CAAE,IAAK,IAAK,MAAO,QAAS,OAAQ,eAAgB,CACtD,EACA,QAAS,CAAE,KAAM,CAAc,CACjC,CACF,CACF,EAGA,SAAgB,EAAuB,EAAiB,EAAwB,CAC9E,EAAO,OAAO,WAAa,CACzB,GAAM,CAAE,QAAO,WAAU,YAAa,EAAS,YAAa,EAAwB,EAC9E,EAA2B,EAAoB,CACnD,YAAa,iBACb,YAAa,EACb,IAAK,QAAQ,IACb,WAAY,GACZ,aAAc,EAChB,CAAC,EACK,EAAgB,IAAI,IACtB,EAAS,GACT,EAAoB,EAExB,MAAM,SAAY,CAChB,EAAS,GACT,GAAqB,EACrB,EAAc,MAAM,EACpB,GAAI,CACG,QAAQ,IAAI,IAAqB,MAAM,EAAS,MAAM,EAC3D,MAAM,EAAU,YAAY,mCAAoC,CAAE,QAAS,QAAS,CAAC,CACvF,QAAU,CACR,MAAM,EAAU,SAAS,CAC3B,CACF,EAEA,EAAG,gBAAgB,EAAe,CAChC,YAAa,sCACb,QAAS,MAAO,EAAO,IAAQ,CACxB,KACL,IAAI,CAAC,EAAI,MAAO,CACd,EAAI,GAAG,OAAO,wCAAyC,OAAO,EAC9D,MACF,CACA,MAAM,EAAS,KAAK,CAAG,CADvB,CAEF,CACF,CAAC,EAED,EAAG,GAAG,iBAAkB,EAAQ,IAAQ,CACtC,GAAI,CAAC,EAAQ,OACb,GAAqB,EACrB,EAAc,MAAM,EACpB,IAAM,EAAa,EAAM,WAAW,EAAI,eAAe,aAAa,CAAC,EACrE,EAAS,WAAW,EAAM,aAAa,EAAI,IAAK,CAAU,CAAC,EAC3D,EAAe,YAAY,kCAAmC,CAAE,QAAS,aAAc,CAAC,CAC1F,CAAC,EACD,EAAG,GAAG,uBAAwB,MAAO,EAAO,IAAQ,CAClD,GAAI,CAAC,EAAQ,OACb,IAAM,EAAgB,EAGtB,GAFA,EAAc,IAAI,EAAM,WAAY,KAAK,IAAI,CAAC,EAC9C,MAAM,EAAQ,MAAM,EAAM,WAAY,EAAM,SAAU,EAAM,KAAM,EAAI,GAAG,EACrE,CAAC,GAAU,IAAkB,EAAmB,CAClD,EAAc,OAAO,EAAM,UAAU,EACrC,MACF,CACA,EAAe,YAAY,8BAA+B,CAAE,YAAa,EAAM,QAAS,CAAC,CAC3F,CAAC,EACD,EAAG,GAAG,qBAAsB,KAAO,IAAU,CAC3C,GAAI,CAAC,EAAQ,OACb,IAAM,EAAY,EAAc,IAAI,EAAM,UAAU,EACpD,EAAc,OAAO,EAAM,UAAU,EACrC,MAAM,EAAQ,IAAI,EAAM,WAAY,EAAM,OAAO,EAC5C,GACL,EAAe,YAAY,+BAAgC,CACzD,YAAa,EAAM,SACnB,oBAAqB,EAAM,QAC3B,GAAI,IAAc,IAAA,GAAY,CAAC,EAAI,CAAE,YAAa,KAAK,IAAI,EAAI,CAAU,EACzE,QAAS,EAAM,QAAU,SAAW,WACtC,CAAC,CACH,CAAC,CACH,EAAG,GAAG,EAAe,SAAS,CAChC,CAGA,eAAsB,EAAkB,EAAiC,CACvE,IAAM,EAAa,MAAM,EAAsB,EAAI,CAAc,EAC3D,EAAQ,EAAW,KAAK,OAAO,EAAgB,CAAE,IAAG,CAAC,EAC3D,GAAI,CACF,MAAM,CACR,OAAS,EAAO,CACd,GAAI,CACF,MAAM,EAAM,QAAQ,CACtB,QAAU,CACR,MAAM,EAAW,QAAQ,CAC3B,CACA,MAAM,CACR,CACA,IAAI,EACJ,EAAG,GACD,uBAEG,KAAc,SAAY,CACzB,GAAI,CACF,MAAM,EAAM,QAAQ,CACtB,QAAU,CACR,MAAM,EAAW,QAAQ,CAC3B,CACF,EAAA,CAAG,CACP,CACF,CAMA,SAAS,EAAe,EAAiB,EAAoC,CAC3E,EAAuB,EAAQ,EAAO,EAAE,EACxC,EAAO,OAAO,CAAC,CAAmB,EAAI,GAAc,CAClD,IAAM,EAAe,EAAiB,CAAS,CAAC,CAAC,eAAe,CAA6B,EAC7F,UAAa,EAAa,QAAQ,CACpC,CAAC,CACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agimon-ai/doompi-file-edit",
3
- "version": "0.0.1-alpha.24",
3
+ "version": "0.0.1-alpha.26",
4
4
  "description": "Pi extension for session-scoped file-change timelines and external editor workflows.",
5
5
  "keywords": [
6
6
  "ai",
@@ -44,10 +44,10 @@
44
44
  "dependencies": {
45
45
  "@deepseek-ai/cordis": "4.0.1",
46
46
  "cross-spawn": "7.0.6",
47
- "@agimon-ai/doompi-config": "0.0.1-alpha.24",
48
- "@agimon-ai/doompi-telemetry": "0.0.1-alpha.24",
49
- "@agimon-ai/doompi-ui": "0.0.1-alpha.24",
50
- "@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.24"
47
+ "@agimon-ai/doompi-config": "0.0.1-alpha.26",
48
+ "@agimon-ai/doompi-telemetry": "0.0.1-alpha.26",
49
+ "@agimon-ai/doompi-ui": "0.0.1-alpha.26",
50
+ "@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.26"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@earendil-works/pi-coding-agent": "0.84.2",