@xemahq/opencode-xema-plugin 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -40
- package/dist/.source-stamp.json +2 -2
- package/dist/context.d.ts +5 -14
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +4 -13
- package/dist/context.js.map +1 -1
- package/dist/hooks/compaction-invariants.d.ts +8 -0
- package/dist/hooks/compaction-invariants.d.ts.map +1 -0
- package/dist/hooks/compaction-invariants.js +60 -0
- package/dist/hooks/compaction-invariants.js.map +1 -0
- package/dist/hooks/root-turn-completion.d.ts +14 -0
- package/dist/hooks/root-turn-completion.d.ts.map +1 -0
- package/dist/hooks/root-turn-completion.js +84 -0
- package/dist/hooks/root-turn-completion.js.map +1 -0
- package/dist/hooks/shell-env-hygiene.d.ts +6 -0
- package/dist/hooks/shell-env-hygiene.d.ts.map +1 -0
- package/dist/hooks/shell-env-hygiene.js +10 -0
- package/dist/hooks/shell-env-hygiene.js.map +1 -0
- package/dist/hooks/subagent-fanout-ceiling.d.ts +18 -17
- package/dist/hooks/subagent-fanout-ceiling.d.ts.map +1 -1
- package/dist/hooks/subagent-fanout-ceiling.js +106 -92
- package/dist/hooks/subagent-fanout-ceiling.js.map +1 -1
- package/dist/hooks/system-overlay.d.ts +6 -0
- package/dist/hooks/system-overlay.d.ts.map +1 -0
- package/dist/hooks/system-overlay.js +40 -0
- package/dist/hooks/system-overlay.js.map +1 -0
- package/dist/hooks/tool-surface-observation.d.ts +14 -0
- package/dist/hooks/tool-surface-observation.d.ts.map +1 -0
- package/dist/hooks/tool-surface-observation.js +30 -0
- package/dist/hooks/tool-surface-observation.js.map +1 -0
- package/dist/hooks/workspace-listing.js +3 -3
- package/dist/hooks/workspace-listing.js.map +1 -1
- package/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -70
- package/dist/index.js.map +1 -1
- package/dist/plugin-id.d.ts +2 -0
- package/dist/plugin-id.d.ts.map +1 -0
- package/dist/plugin-id.js +2 -0
- package/dist/plugin-id.js.map +1 -0
- package/dist/plugin.d.ts +4 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +86 -0
- package/dist/plugin.js.map +1 -0
- package/dist/runtime-events.d.ts +17 -0
- package/dist/runtime-events.d.ts.map +1 -0
- package/dist/runtime-events.js +39 -0
- package/dist/runtime-events.js.map +1 -0
- package/package.json +12 -16
- package/{plugin.mjs → plugin/xema-runtime-bridge/index.js} +407 -415
- package/plugin/xema-runtime-bridge/package.json +8 -0
- package/dist/hooks/session-idle-autocommit.d.ts +0 -11
- package/dist/hooks/session-idle-autocommit.d.ts.map +0 -1
- package/dist/hooks/session-idle-autocommit.js +0 -206
- package/dist/hooks/session-idle-autocommit.js.map +0 -1
- package/dist/hooks/system-prompt-overlay.d.ts +0 -3
- package/dist/hooks/system-prompt-overlay.d.ts.map +0 -1
- package/dist/hooks/system-prompt-overlay.js +0 -30
- package/dist/hooks/system-prompt-overlay.js.map +0 -1
- package/dist/opencode-types.d.ts +0 -49
- package/dist/opencode-types.d.ts.map +0 -1
- package/dist/opencode-types.js +0 -2
- package/dist/opencode-types.js.map +0 -1
- package/dist/plugin-entry.d.ts +0 -2
- package/dist/plugin-entry.d.ts.map +0 -1
- package/dist/plugin-entry.js +0 -2
- package/dist/plugin-entry.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-id.js","sourceRoot":"","sources":["../src/plugin-id.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC"}
|
package/dist/plugin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAuG/C,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,MAAqD,CAAC;AAE3E,eAAe,MAAM,CAAC"}
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { buildCompactionInvariantsHook } from './hooks/compaction-invariants.js';
|
|
2
|
+
import { createRootTurnCompletion } from './hooks/root-turn-completion.js';
|
|
3
|
+
import { scrubShellEnv } from './hooks/shell-env-hygiene.js';
|
|
4
|
+
import { createSubagentFanoutCeiling, resolveSubagentFanoutLimit, } from './hooks/subagent-fanout-ceiling.js';
|
|
5
|
+
import { buildSystemOverlayHook } from './hooks/system-overlay.js';
|
|
6
|
+
import { observeToolSurface, resolveRuntimeStateDir } from './hooks/tool-surface-observation.js';
|
|
7
|
+
import { info, warn } from './logger.js';
|
|
8
|
+
import { XEMA_RUNTIME_BRIDGE_PLUGIN_ID } from './plugin-id.js';
|
|
9
|
+
import { parseRuntimeSessionEvent } from './runtime-events.js';
|
|
10
|
+
const TOOL_SURFACE_EVENTS = new Set([
|
|
11
|
+
'plugin.updated',
|
|
12
|
+
'integration.updated',
|
|
13
|
+
'skill.updated',
|
|
14
|
+
'agent.updated',
|
|
15
|
+
]);
|
|
16
|
+
async function setup(ctx) {
|
|
17
|
+
const directory = ctx.location.directory;
|
|
18
|
+
const limit = resolveSubagentFanoutLimit();
|
|
19
|
+
const fanout = createSubagentFanoutCeiling({ limit });
|
|
20
|
+
const turnCompletion = createRootTurnCompletion({
|
|
21
|
+
resolveParentId: async (sessionId) => {
|
|
22
|
+
const session = await ctx.session.get({ sessionID: sessionId });
|
|
23
|
+
return session.parentID !== undefined && session.parentID.length > 0
|
|
24
|
+
? session.parentID
|
|
25
|
+
: undefined;
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
const stateDir = resolveRuntimeStateDir();
|
|
29
|
+
const observe = () => observeToolSurface({
|
|
30
|
+
stateDir,
|
|
31
|
+
listToolIds: async () => (await ctx.tool.list()).map((tool) => tool.id),
|
|
32
|
+
});
|
|
33
|
+
const registrations = [
|
|
34
|
+
await ctx.session.hook('context', buildSystemOverlayHook(directory)),
|
|
35
|
+
await ctx.session.hook('compaction', buildCompactionInvariantsHook(directory)),
|
|
36
|
+
await ctx.tool.hook('execute.before', (input) => fanout.beforeToolCall({ tool: input.tool, sessionID: input.sessionID, id: input.id })),
|
|
37
|
+
await ctx.tool.hook('execute.after', (input) => {
|
|
38
|
+
fanout.afterToolCall({ tool: input.tool, sessionID: input.sessionID, id: input.id });
|
|
39
|
+
}),
|
|
40
|
+
await ctx.shell.hook('create.before', scrubShellEnv),
|
|
41
|
+
];
|
|
42
|
+
const abort = new AbortController();
|
|
43
|
+
const events = (async () => {
|
|
44
|
+
try {
|
|
45
|
+
for await (const event of ctx.event.subscribe({ signal: abort.signal })) {
|
|
46
|
+
handleEvent(event);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
if (!abort.signal.aborted) {
|
|
51
|
+
warn(`event subscription ended unexpectedly: ${err instanceof Error ? err.message : String(err)}. ` +
|
|
52
|
+
'Fan-out children now release only by TTL and turn-completion notices stop until restart.');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
})();
|
|
56
|
+
function handleEvent(event) {
|
|
57
|
+
const type = event?.type;
|
|
58
|
+
if (typeof type === 'string' && TOOL_SURFACE_EVENTS.has(type)) {
|
|
59
|
+
void observe();
|
|
60
|
+
}
|
|
61
|
+
const parsed = parseRuntimeSessionEvent(event);
|
|
62
|
+
if (parsed === undefined)
|
|
63
|
+
return;
|
|
64
|
+
if (parsed.kind === 'created') {
|
|
65
|
+
fanout.onSessionCreated(parsed.sessionId, parsed.parentId);
|
|
66
|
+
turnCompletion.onSessionCreated(parsed.sessionId, parsed.parentId);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
fanout.onSessionTerminal(parsed.sessionId);
|
|
70
|
+
void turnCompletion.onSessionTerminal(parsed.sessionId, parsed.outcome, parsed.executionId);
|
|
71
|
+
}
|
|
72
|
+
await observe();
|
|
73
|
+
info(`setup: ${XEMA_RUNTIME_BRIDGE_PLUGIN_ID} ready (OpenCode ${ctx.app.version}, dir=${directory}, ` +
|
|
74
|
+
`tools=0, sub-agent fan-out limit=${limit}, tool surface → ${stateDir})`);
|
|
75
|
+
return async () => {
|
|
76
|
+
abort.abort();
|
|
77
|
+
fanout.dispose();
|
|
78
|
+
for (const registration of registrations) {
|
|
79
|
+
await registration.dispose();
|
|
80
|
+
}
|
|
81
|
+
await events;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const plugin = { id: XEMA_RUNTIME_BRIDGE_PLUGIN_ID, setup };
|
|
85
|
+
export default plugin;
|
|
86
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare enum SessionExecutionOutcome {
|
|
2
|
+
Succeeded = "succeeded",
|
|
3
|
+
Failed = "failed",
|
|
4
|
+
Interrupted = "interrupted"
|
|
5
|
+
}
|
|
6
|
+
export type RuntimeSessionEvent = {
|
|
7
|
+
readonly kind: 'created';
|
|
8
|
+
readonly sessionId: string;
|
|
9
|
+
readonly parentId: string | undefined;
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: 'terminal';
|
|
12
|
+
readonly sessionId: string;
|
|
13
|
+
readonly outcome: SessionExecutionOutcome;
|
|
14
|
+
readonly executionId: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function parseRuntimeSessionEvent(event: unknown): RuntimeSessionEvent | undefined;
|
|
17
|
+
//# sourceMappingURL=runtime-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-events.d.ts","sourceRoot":"","sources":["../src/runtime-events.ts"],"names":[],"mappings":"AAiBA,oBAAY,uBAAuB;IACjC,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,WAAW,gBAAgB;CAC5B;AASD,MAAM,MAAM,mBAAmB,GAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAE1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAMN,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAuBxF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export var SessionExecutionOutcome;
|
|
2
|
+
(function (SessionExecutionOutcome) {
|
|
3
|
+
SessionExecutionOutcome["Succeeded"] = "succeeded";
|
|
4
|
+
SessionExecutionOutcome["Failed"] = "failed";
|
|
5
|
+
SessionExecutionOutcome["Interrupted"] = "interrupted";
|
|
6
|
+
})(SessionExecutionOutcome || (SessionExecutionOutcome = {}));
|
|
7
|
+
const TERMINAL_EVENT_TYPES = Object.freeze({
|
|
8
|
+
'session.execution.succeeded': SessionExecutionOutcome.Succeeded,
|
|
9
|
+
'session.execution.failed': SessionExecutionOutcome.Failed,
|
|
10
|
+
'session.execution.interrupted': SessionExecutionOutcome.Interrupted,
|
|
11
|
+
});
|
|
12
|
+
function isRecord(value) {
|
|
13
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
14
|
+
}
|
|
15
|
+
export function parseRuntimeSessionEvent(event) {
|
|
16
|
+
if (!isRecord(event) || typeof event.type !== 'string' || !isRecord(event.data)) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const sessionId = event.data.sessionID;
|
|
20
|
+
if (typeof sessionId !== 'string' || sessionId.length === 0) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
if (event.type === 'session.created') {
|
|
24
|
+
const parent = event.data.parentID;
|
|
25
|
+
return {
|
|
26
|
+
kind: 'created',
|
|
27
|
+
sessionId,
|
|
28
|
+
parentId: typeof parent === 'string' && parent.length > 0 ? parent : undefined,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const outcome = Object.hasOwn(TERMINAL_EVENT_TYPES, event.type)
|
|
32
|
+
? TERMINAL_EVENT_TYPES[event.type]
|
|
33
|
+
: undefined;
|
|
34
|
+
if (outcome === undefined || typeof event.id !== 'string' || event.id.length === 0) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
return { kind: 'terminal', sessionId, outcome, executionId: event.id };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=runtime-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-events.js","sourceRoot":"","sources":["../src/runtime-events.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAN,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IACjC,kDAAuB,CAAA;IACvB,4CAAiB,CAAA;IACjB,sDAA2B,CAAA;AAC7B,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,QAIlC;AAED,MAAM,oBAAoB,GACxB,MAAM,CAAC,MAAM,CAAC;IACZ,6BAA6B,EAAE,uBAAuB,CAAC,SAAS;IAChE,0BAA0B,EAAE,uBAAuB,CAAC,MAAM;IAC1D,+BAA+B,EAAE,uBAAuB,CAAC,WAAW;CACrE,CAAC,CAAC;AAgBL,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAChF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IACvC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,SAAS;YACT,QAAQ,EAAE,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAC/E,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC;QAC7D,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC;QAClC,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACzE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/opencode-xema-plugin",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "OpenCode V2 plugin `xema-runtime-bridge`: the Xema system overlay, compaction continuation invariants, root-session auto-commit, the sub-agent fan-out ceiling, tool-surface observation and shell env hygiene. Contributes no tools.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",
|
|
7
7
|
"homepage": "https://xema.dev",
|
|
@@ -20,19 +20,19 @@
|
|
|
20
20
|
"types": "dist/index.d.ts",
|
|
21
21
|
"files": [
|
|
22
22
|
"dist",
|
|
23
|
-
"plugin
|
|
23
|
+
"plugin"
|
|
24
24
|
],
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@opencode
|
|
27
|
-
|
|
26
|
+
"@opencode/plugin": "2.0.20"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"zod": "^4.3.6"
|
|
28
30
|
},
|
|
29
31
|
"devDependencies": {
|
|
30
|
-
"@opencode
|
|
32
|
+
"@opencode/plugin": "2.0.20",
|
|
31
33
|
"@types/node": "25.2.3",
|
|
32
34
|
"esbuild": "^0.25.4",
|
|
33
|
-
"typescript": "5.9.3"
|
|
34
|
-
"zod": "^4.3.6",
|
|
35
|
-
"@xemahq/contracts": "^0.1.0"
|
|
35
|
+
"typescript": "5.9.3"
|
|
36
36
|
},
|
|
37
37
|
"exports": {
|
|
38
38
|
".": {
|
|
@@ -40,16 +40,12 @@
|
|
|
40
40
|
"xema-source": "./src/index.ts",
|
|
41
41
|
"default": "./dist/index.js"
|
|
42
42
|
},
|
|
43
|
-
"./plugin
|
|
44
|
-
"./dist/lib/*": {
|
|
45
|
-
"types": "./dist/lib/*.d.ts",
|
|
46
|
-
"default": "./dist/lib/*.js"
|
|
47
|
-
}
|
|
43
|
+
"./plugin/xema-runtime-bridge": "./plugin/xema-runtime-bridge/index.js"
|
|
48
44
|
},
|
|
49
45
|
"scripts": {
|
|
50
|
-
"clean": "rm -rf dist plugin
|
|
46
|
+
"clean": "rm -rf dist plugin",
|
|
51
47
|
"build": "pnpm run clean && tsc -p tsconfig.json && node scripts/write-dist-source-stamp.mjs && pnpm run bundle",
|
|
52
|
-
"bundle": "
|
|
48
|
+
"bundle": "node scripts/bundle-plugin.mjs",
|
|
53
49
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
54
50
|
"test": "node --test tests/*.test.mjs"
|
|
55
51
|
}
|