@gencode/agents 0.0.4 → 0.0.5

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.
Files changed (59) hide show
  1. package/dist/plugins/hooks.d.ts +20 -1
  2. package/dist/plugins/hooks.d.ts.map +1 -1
  3. package/dist/plugins/hooks.js.map +1 -1
  4. package/dist/plugins/index.d.ts +1 -1
  5. package/dist/plugins/index.d.ts.map +1 -1
  6. package/dist/plugins/index.js.map +1 -1
  7. package/dist/runner/agent-runtime.d.ts +62 -0
  8. package/dist/runner/agent-runtime.d.ts.map +1 -0
  9. package/dist/runner/agent-runtime.js +179 -0
  10. package/dist/runner/agent-runtime.js.map +1 -0
  11. package/dist/runner/announce-loop.d.ts +41 -0
  12. package/dist/runner/announce-loop.d.ts.map +1 -0
  13. package/dist/runner/announce-loop.js +94 -0
  14. package/dist/runner/announce-loop.js.map +1 -0
  15. package/dist/runner/event-dispatcher.d.ts +31 -0
  16. package/dist/runner/event-dispatcher.d.ts.map +1 -0
  17. package/dist/runner/event-dispatcher.js +87 -0
  18. package/dist/runner/event-dispatcher.js.map +1 -0
  19. package/dist/runner/finalizer.d.ts +30 -0
  20. package/dist/runner/finalizer.d.ts.map +1 -0
  21. package/dist/runner/finalizer.js +75 -0
  22. package/dist/runner/finalizer.js.map +1 -0
  23. package/dist/runner/invocation-resolver.d.ts +67 -0
  24. package/dist/runner/invocation-resolver.d.ts.map +1 -0
  25. package/dist/runner/invocation-resolver.js +224 -0
  26. package/dist/runner/invocation-resolver.js.map +1 -0
  27. package/dist/runner/plugin-context.d.ts +18 -0
  28. package/dist/runner/plugin-context.d.ts.map +1 -0
  29. package/dist/runner/plugin-context.js +26 -0
  30. package/dist/runner/plugin-context.js.map +1 -0
  31. package/dist/runner/run-context.d.ts +38 -0
  32. package/dist/runner/run-context.d.ts.map +1 -0
  33. package/dist/runner/run-context.js +159 -0
  34. package/dist/runner/run-context.js.map +1 -0
  35. package/dist/runner/runner-session.d.ts +34 -0
  36. package/dist/runner/runner-session.d.ts.map +1 -0
  37. package/dist/runner/runner-session.js +61 -0
  38. package/dist/runner/runner-session.js.map +1 -0
  39. package/dist/runner/runner.d.ts +1 -2
  40. package/dist/runner/runner.d.ts.map +1 -1
  41. package/dist/runner/runner.js +115 -889
  42. package/dist/runner/runner.js.map +1 -1
  43. package/dist/runner/runtime.d.ts +7 -0
  44. package/dist/runner/runtime.d.ts.map +1 -0
  45. package/dist/runner/runtime.js +21 -0
  46. package/dist/runner/runtime.js.map +1 -0
  47. package/dist/runner/session-lifecycle.d.ts +31 -0
  48. package/dist/runner/session-lifecycle.d.ts.map +1 -0
  49. package/dist/runner/session-lifecycle.js +46 -0
  50. package/dist/runner/session-lifecycle.js.map +1 -0
  51. package/dist/runner/title.d.ts +3 -0
  52. package/dist/runner/title.d.ts.map +1 -0
  53. package/dist/runner/title.js +6 -0
  54. package/dist/runner/title.js.map +1 -0
  55. package/dist/runner/turn-executor.d.ts +51 -0
  56. package/dist/runner/turn-executor.d.ts.map +1 -0
  57. package/dist/runner/turn-executor.js +255 -0
  58. package/dist/runner/turn-executor.js.map +1 -0
  59. package/package.json +1 -1
@@ -0,0 +1,159 @@
1
+ import path from "node:path";
2
+ import { appendTranscriptEntry, } from "../session/session.js";
3
+ import { createBuiltinMemoryProvider } from "../memory/builtin-provider.js";
4
+ import { resolveMemoryProvider } from "../memory/provider-registry.js";
5
+ import { startMemoryWatchBridge } from "../memory/watch-bridge.js";
6
+ import { RunEventDispatcher } from "./event-dispatcher.js";
7
+ const MEMORY_EVENT_DEDUPE_WINDOW_MS = 1_000;
8
+ const EXTERNAL_WATCH_SUPPRESS_WINDOW_MS = 3_000;
9
+ /**
10
+ * Creates the session-scoped runtime context used by the runner. The returned
11
+ * object hides memory provider resolution, transcript write options, and the
12
+ * watch bridge lifecycle behind a small interface.
13
+ */
14
+ export async function createRunContext(params) {
15
+ const { runParams, eventDispatcher, hookRegistry } = params;
16
+ const { sessionId, hookContext, memoryProviderId, memoryPluginId } = params;
17
+ const workspaceDir = path.join(runParams.dataDir, "workspace");
18
+ const recentMemoryWrites = new Map();
19
+ const recentMemoryEvents = new Map();
20
+ let initialUserEntryPersisted = false;
21
+ const emitMemoryChanged = async (event) => {
22
+ const now = Date.now();
23
+ const normalizedFiles = normalizeMemoryChangedFiles(event.files);
24
+ if (normalizedFiles.length === 0) {
25
+ return;
26
+ }
27
+ const filteredFiles = event.reason === "external-watch" && event.source === "memory"
28
+ ? normalizedFiles.filter((file) => {
29
+ const lastWriteAt = recentMemoryWrites.get(file.toLowerCase()) ?? 0;
30
+ return now - lastWriteAt > EXTERNAL_WATCH_SUPPRESS_WINDOW_MS;
31
+ })
32
+ : normalizedFiles;
33
+ if (filteredFiles.length === 0) {
34
+ return;
35
+ }
36
+ if (event.reason !== "external-watch" && event.source === "memory") {
37
+ for (const file of filteredFiles) {
38
+ recentMemoryWrites.set(file.toLowerCase(), now);
39
+ }
40
+ }
41
+ const dedupeKey = `${event.reason}|${event.source}|${filteredFiles.map((file) => file.toLowerCase()).sort().join("|")}`;
42
+ const previousEventAt = recentMemoryEvents.get(dedupeKey) ?? 0;
43
+ if (now - previousEventAt < MEMORY_EVENT_DEDUPE_WINDOW_MS) {
44
+ return;
45
+ }
46
+ recentMemoryEvents.set(dedupeKey, now);
47
+ const eventToEmit = {
48
+ ...event,
49
+ files: filteredFiles,
50
+ };
51
+ await eventDispatcher.dispatchProgress(event.sessionId ?? sessionId, {
52
+ type: "memory_changed",
53
+ reason: eventToEmit.reason,
54
+ files: eventToEmit.files,
55
+ source: eventToEmit.source,
56
+ providerId: eventToEmit.providerId,
57
+ timestamp: eventToEmit.timestamp,
58
+ }).catch(() => { });
59
+ await hookRegistry.dispatch("memory_changed", eventToEmit, {
60
+ ...hookContext,
61
+ sessionId: eventToEmit.sessionId ?? hookContext.sessionId,
62
+ }).catch(() => { });
63
+ };
64
+ const memoryRoot = path.join(runParams.dataDir, ".aimax");
65
+ const resolvedProvider = resolveMemoryProvider({
66
+ providerId: memoryProviderId,
67
+ pluginId: memoryPluginId,
68
+ dataDir: runParams.dataDir,
69
+ memoryDir: memoryRoot,
70
+ sessionId,
71
+ });
72
+ const provider = resolvedProvider?.provider ??
73
+ createBuiltinMemoryProvider({ dataDir: runParams.dataDir, memoryDir: memoryRoot, sessionId });
74
+ const stopMemoryWatchBridge = startMemoryWatchBridge({
75
+ dataDir: runParams.dataDir,
76
+ sessionId,
77
+ providerId: memoryProviderId ?? memoryPluginId ?? provider.id,
78
+ provider,
79
+ onMemoryChanged: emitMemoryChanged,
80
+ });
81
+ if (provider.sync) {
82
+ void provider.sync("session-start").catch(() => { });
83
+ }
84
+ const appendWithMemory = async (entry) => {
85
+ await appendTranscriptEntry(runParams.dataDir, sessionId, entry, buildTranscriptOptions({
86
+ providerId: memoryProviderId,
87
+ pluginId: memoryPluginId,
88
+ onMemoryChanged: emitMemoryChanged,
89
+ }));
90
+ };
91
+ return {
92
+ workspaceDir,
93
+ memoryProviderId,
94
+ memoryPluginId,
95
+ appendTranscriptEntry: appendWithMemory,
96
+ persistInitialUserEntry: async (content) => {
97
+ if (initialUserEntryPersisted) {
98
+ return false;
99
+ }
100
+ await appendWithMemory({
101
+ role: "user",
102
+ content,
103
+ timestamp: new Date().toISOString(),
104
+ });
105
+ initialUserEntryPersisted = true;
106
+ return true;
107
+ },
108
+ stop: () => {
109
+ stopMemoryWatchBridge();
110
+ },
111
+ };
112
+ }
113
+ export function buildNewSessionMetadata(params) {
114
+ const now = new Date().toISOString();
115
+ return {
116
+ id: params.sessionId,
117
+ title: params.title,
118
+ channel: params.channel,
119
+ createdAt: now,
120
+ updatedAt: now,
121
+ };
122
+ }
123
+ /**
124
+ * Transcript writes only need memory identifiers when memory integration is
125
+ * enabled. This helper keeps that conditional wiring out of callers.
126
+ */
127
+ function buildTranscriptOptions(params) {
128
+ if (params.providerId || params.pluginId) {
129
+ return {
130
+ providerId: params.providerId,
131
+ pluginId: params.pluginId,
132
+ onMemoryChanged: params.onMemoryChanged,
133
+ };
134
+ }
135
+ return { onMemoryChanged: params.onMemoryChanged };
136
+ }
137
+ /**
138
+ * Normalizes file paths before dedupe so providers can report paths in a
139
+ * variety of formats without causing duplicate memory_changed events.
140
+ */
141
+ function normalizeMemoryChangedFiles(files) {
142
+ const result = [];
143
+ const seen = new Set();
144
+ for (const raw of files) {
145
+ const normalized = raw.replace(/\\/g, "/").replace(/^\.\//, "").trim();
146
+ if (!normalized) {
147
+ continue;
148
+ }
149
+ const canonical = normalized.toLowerCase() === "memory.md" ? "MEMORY.md" : normalized;
150
+ const key = canonical.toLowerCase();
151
+ if (seen.has(key)) {
152
+ continue;
153
+ }
154
+ seen.add(key);
155
+ result.push(canonical);
156
+ }
157
+ return result;
158
+ }
159
+ //# sourceMappingURL=run-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-context.js","sourceRoot":"","sources":["../../src/runner/run-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { AgentRunParams } from "../types.js";
2
+ import { type AgentRunContext } from "./run-context.js";
3
+ import { type RunnerPluginContext } from "./plugin-context.js";
4
+ import { RunEventDispatcher } from "./event-dispatcher.js";
5
+ import type { PluginHookAgentContext, PluginHookRegistry } from "../plugins/hooks.js";
6
+ export type RunnerSession = {
7
+ sessionId: string;
8
+ isNewSession: boolean;
9
+ workspaceDir: string;
10
+ hookContext: PluginHookAgentContext;
11
+ hookRegistry: PluginHookRegistry;
12
+ pluginContext: RunnerPluginContext;
13
+ runContext: AgentRunContext;
14
+ start: (params: {
15
+ resetCommand?: {
16
+ action: "new" | "reset";
17
+ };
18
+ previousSessionId?: string;
19
+ rawMessage?: string;
20
+ startMessage: string;
21
+ }) => Promise<void>;
22
+ };
23
+ /**
24
+ * Establishes the session-scoped objects the runner needs: concrete session
25
+ * identity, hook context, plugin derivatives, memory/transcript run context,
26
+ * and start-of-session notifications. Callers should treat the returned value
27
+ * as the single source of truth for session-local runner state.
28
+ */
29
+ export declare function createRunnerSession(params: {
30
+ runParams: AgentRunParams;
31
+ requestedSessionId?: string;
32
+ eventDispatcher: RunEventDispatcher;
33
+ }): Promise<RunnerSession>;
34
+ //# sourceMappingURL=runner-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner-session.d.ts","sourceRoot":"","sources":["../../src/runner/runner-session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEtF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,sBAAsB,CAAC;IACpC,YAAY,EAAE,kBAAkB,CAAC;IACjC,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,EAAE,CAAC,MAAM,EAAE;QACd,YAAY,CAAC,EAAE;YAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAAA;SAAE,CAAC;QAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAChD,SAAS,EAAE,cAAc,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,kBAAkB,CAAC;CACrC,GAAG,OAAO,CAAC,aAAa,CAAC,CAgDzB"}
@@ -0,0 +1,61 @@
1
+ import path from "node:path";
2
+ import { createSession, ensureSession } from "../session/session.js";
3
+ import { createRunContext } from "./run-context.js";
4
+ import { createRunnerPluginContext } from "./plugin-context.js";
5
+ import { startSessionLifecycle } from "./session-lifecycle.js";
6
+ import { RunEventDispatcher } from "./event-dispatcher.js";
7
+ /**
8
+ * Establishes the session-scoped objects the runner needs: concrete session
9
+ * identity, hook context, plugin derivatives, memory/transcript run context,
10
+ * and start-of-session notifications. Callers should treat the returned value
11
+ * as the single source of truth for session-local runner state.
12
+ */
13
+ export async function createRunnerSession(params) {
14
+ const { runParams, requestedSessionId, eventDispatcher } = params;
15
+ const workspaceDir = path.join(runParams.dataDir, "workspace");
16
+ let sessionId = requestedSessionId;
17
+ const isNewSession = !sessionId;
18
+ if (sessionId) {
19
+ await ensureSession(runParams.dataDir, sessionId);
20
+ }
21
+ else {
22
+ sessionId = await createSession(runParams.dataDir, runParams.channel);
23
+ }
24
+ const hookContext = {
25
+ sessionId,
26
+ workspaceDir,
27
+ channel: runParams.channel,
28
+ };
29
+ const pluginContext = createRunnerPluginContext({
30
+ runParams,
31
+ hookContext,
32
+ });
33
+ const hookRegistry = pluginContext.hookRegistry;
34
+ const runContext = await createRunContext({
35
+ runParams,
36
+ sessionId,
37
+ hookContext,
38
+ memoryProviderId: runParams.memory?.providerId,
39
+ memoryPluginId: pluginContext.memoryPluginId,
40
+ eventDispatcher,
41
+ hookRegistry,
42
+ });
43
+ return {
44
+ sessionId,
45
+ isNewSession,
46
+ workspaceDir,
47
+ hookContext,
48
+ hookRegistry,
49
+ pluginContext,
50
+ runContext,
51
+ start: (startParams) => startSessionLifecycle({
52
+ sessionId,
53
+ runParams,
54
+ hookRegistry,
55
+ hookContext,
56
+ eventDispatcher,
57
+ ...startParams,
58
+ }),
59
+ };
60
+ }
61
+ //# sourceMappingURL=runner-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner-session.js","sourceRoot":"","sources":["../../src/runner/runner-session.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAA4B,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAmB3D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAIzC;IACC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAClE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/D,IAAI,SAAS,GAAG,kBAAkB,CAAC;IACnC,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,WAAW,GAA2B;QAC1C,SAAS;QACT,YAAY;QACZ,OAAO,EAAE,SAAS,CAAC,OAAO;KAC3B,CAAC;IACF,MAAM,aAAa,GAAG,yBAAyB,CAAC;QAC9C,SAAS;QACT,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC;QACxC,SAAS;QACT,SAAS;QACT,WAAW;QACX,gBAAgB,EAAE,SAAS,CAAC,MAAM,EAAE,UAAU;QAC9C,cAAc,EAAE,aAAa,CAAC,cAAc;QAC5C,eAAe;QACf,YAAY;KACb,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;QACT,YAAY;QACZ,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,aAAa;QACb,UAAU;QACV,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,qBAAqB,CAAC;YAC5C,SAAS;YACT,SAAS;YACT,YAAY;YACZ,WAAW;YACX,eAAe;YACf,GAAG,WAAW;SACf,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import type { AgentRunParams, AgentRunResult } from "../types.js";
2
2
  import { SubagentRegistry } from "../subagent/registry.js";
3
- /** Generates a session title by truncating the first user message */
4
- export declare function generateSessionTitle(message: string, maxLength?: number): string;
3
+ export { generateSessionTitle } from "./title.js";
5
4
  /**
6
5
  * Runs an agent session end-to-end.
7
6
  * Supports multi-agent: subagents spawned via sessions_spawn are automatically
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/runner/runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAKf,MAAM,aAAa,CAAC;AASrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAsC3D,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM,CAG5E;AAgvCD;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EACtB,mBAAmB,CAAC,EAAE,gBAAgB,GACrC,OAAO,CAAC,cAAc,CAAC,CAGzB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/runner/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAW3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAuOlD;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EACtB,mBAAmB,CAAC,EAAE,gBAAgB,GACrC,OAAO,CAAC,cAAc,CAAC,CAGzB"}