polpo-ai 0.11.0 → 0.12.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.
Files changed (237) hide show
  1. package/dist/core/runner.d.ts +6 -10
  2. package/dist/core/runner.d.ts.map +1 -1
  3. package/dist/core/runner.js +6 -295
  4. package/dist/core/runner.js.map +1 -1
  5. package/dist/index.d.ts +6 -23
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +6 -28
  8. package/dist/index.js.map +1 -1
  9. package/dist/server/index.d.ts +2 -42
  10. package/dist/server/index.d.ts.map +1 -1
  11. package/dist/server/index.js +2 -127
  12. package/dist/server/index.js.map +1 -1
  13. package/package.json +3 -38
  14. package/dist/adapters/engine.d.ts +0 -51
  15. package/dist/adapters/engine.d.ts.map +0 -1
  16. package/dist/adapters/engine.js +0 -316
  17. package/dist/adapters/engine.js.map +0 -1
  18. package/dist/adapters/index.d.ts +0 -2
  19. package/dist/adapters/index.d.ts.map +0 -1
  20. package/dist/adapters/index.js +0 -4
  21. package/dist/adapters/index.js.map +0 -1
  22. package/dist/adapters/loop-engine.d.ts +0 -36
  23. package/dist/adapters/loop-engine.d.ts.map +0 -1
  24. package/dist/adapters/loop-engine.js +0 -534
  25. package/dist/adapters/loop-engine.js.map +0 -1
  26. package/dist/adapters/node-filesystem.d.ts +0 -22
  27. package/dist/adapters/node-filesystem.d.ts.map +0 -1
  28. package/dist/adapters/node-filesystem.js +0 -59
  29. package/dist/adapters/node-filesystem.js.map +0 -1
  30. package/dist/adapters/node-shell.d.ts +0 -5
  31. package/dist/adapters/node-shell.d.ts.map +0 -1
  32. package/dist/adapters/node-shell.js +0 -34
  33. package/dist/adapters/node-shell.js.map +0 -1
  34. package/dist/adapters/node-spawner.d.ts +0 -14
  35. package/dist/adapters/node-spawner.d.ts.map +0 -1
  36. package/dist/adapters/node-spawner.js +0 -103
  37. package/dist/adapters/node-spawner.js.map +0 -1
  38. package/dist/assessment/assessor.d.ts +0 -6
  39. package/dist/assessment/assessor.d.ts.map +0 -1
  40. package/dist/assessment/assessor.js +0 -37
  41. package/dist/assessment/assessor.js.map +0 -1
  42. package/dist/assessment/index.d.ts +0 -6
  43. package/dist/assessment/index.d.ts.map +0 -1
  44. package/dist/assessment/index.js +0 -6
  45. package/dist/assessment/index.js.map +0 -1
  46. package/dist/assessment/llm-review.d.ts +0 -34
  47. package/dist/assessment/llm-review.d.ts.map +0 -1
  48. package/dist/assessment/llm-review.js +0 -669
  49. package/dist/assessment/llm-review.js.map +0 -1
  50. package/dist/assessment/schemas.d.ts +0 -5
  51. package/dist/assessment/schemas.d.ts.map +0 -1
  52. package/dist/assessment/schemas.js +0 -5
  53. package/dist/assessment/schemas.js.map +0 -1
  54. package/dist/assessment/scoring.d.ts +0 -5
  55. package/dist/assessment/scoring.d.ts.map +0 -1
  56. package/dist/assessment/scoring.js +0 -5
  57. package/dist/assessment/scoring.js.map +0 -1
  58. package/dist/assessment/transcript-parser.d.ts +0 -31
  59. package/dist/assessment/transcript-parser.d.ts.map +0 -1
  60. package/dist/assessment/transcript-parser.js +0 -203
  61. package/dist/assessment/transcript-parser.js.map +0 -1
  62. package/dist/auth/index.d.ts +0 -2
  63. package/dist/auth/index.d.ts.map +0 -1
  64. package/dist/auth/index.js +0 -4
  65. package/dist/auth/index.js.map +0 -1
  66. package/dist/core/adapter.d.ts +0 -62
  67. package/dist/core/adapter.d.ts.map +0 -1
  68. package/dist/core/adapter.js +0 -2
  69. package/dist/core/adapter.js.map +0 -1
  70. package/dist/core/assessment-orchestrator.d.ts +0 -18
  71. package/dist/core/assessment-orchestrator.d.ts.map +0 -1
  72. package/dist/core/assessment-orchestrator.js +0 -93
  73. package/dist/core/assessment-orchestrator.js.map +0 -1
  74. package/dist/core/config.d.ts +0 -17
  75. package/dist/core/config.d.ts.map +0 -1
  76. package/dist/core/config.js +0 -272
  77. package/dist/core/config.js.map +0 -1
  78. package/dist/core/constants.d.ts +0 -10
  79. package/dist/core/constants.d.ts.map +0 -1
  80. package/dist/core/constants.js +0 -11
  81. package/dist/core/constants.js.map +0 -1
  82. package/dist/core/deadlock-resolver.d.ts +0 -35
  83. package/dist/core/deadlock-resolver.d.ts.map +0 -1
  84. package/dist/core/deadlock-resolver.js +0 -317
  85. package/dist/core/deadlock-resolver.js.map +0 -1
  86. package/dist/core/drizzle-sqlite-schema.d.ts +0 -8
  87. package/dist/core/drizzle-sqlite-schema.d.ts.map +0 -1
  88. package/dist/core/drizzle-sqlite-schema.js +0 -250
  89. package/dist/core/drizzle-sqlite-schema.js.map +0 -1
  90. package/dist/core/events.d.ts +0 -26
  91. package/dist/core/events.d.ts.map +0 -1
  92. package/dist/core/events.js +0 -39
  93. package/dist/core/events.js.map +0 -1
  94. package/dist/core/index.d.ts +0 -37
  95. package/dist/core/index.d.ts.map +0 -1
  96. package/dist/core/index.js +0 -31
  97. package/dist/core/index.js.map +0 -1
  98. package/dist/core/ink.d.ts +0 -165
  99. package/dist/core/ink.d.ts.map +0 -1
  100. package/dist/core/ink.js +0 -445
  101. package/dist/core/ink.js.map +0 -1
  102. package/dist/core/orchestrator.d.ts +0 -387
  103. package/dist/core/orchestrator.d.ts.map +0 -1
  104. package/dist/core/orchestrator.js +0 -1015
  105. package/dist/core/orchestrator.js.map +0 -1
  106. package/dist/core/question-detector.d.ts +0 -19
  107. package/dist/core/question-detector.d.ts.map +0 -1
  108. package/dist/core/question-detector.js +0 -29
  109. package/dist/core/question-detector.js.map +0 -1
  110. package/dist/core/session-reader.d.ts +0 -46
  111. package/dist/core/session-reader.d.ts.map +0 -1
  112. package/dist/core/session-reader.js +0 -166
  113. package/dist/core/session-reader.js.map +0 -1
  114. package/dist/llm/index.d.ts +0 -8
  115. package/dist/llm/index.d.ts.map +0 -1
  116. package/dist/llm/index.js +0 -21
  117. package/dist/llm/index.js.map +0 -1
  118. package/dist/llm/pi-client.d.ts +0 -8
  119. package/dist/llm/pi-client.d.ts.map +0 -1
  120. package/dist/llm/pi-client.js +0 -8
  121. package/dist/llm/pi-client.js.map +0 -1
  122. package/dist/llm/prompts.d.ts +0 -14
  123. package/dist/llm/prompts.d.ts.map +0 -1
  124. package/dist/llm/prompts.js +0 -1618
  125. package/dist/llm/prompts.js.map +0 -1
  126. package/dist/llm/retry.d.ts +0 -5
  127. package/dist/llm/retry.d.ts.map +0 -1
  128. package/dist/llm/retry.js +0 -5
  129. package/dist/llm/retry.js.map +0 -1
  130. package/dist/llm/skills.d.ts +0 -265
  131. package/dist/llm/skills.d.ts.map +0 -1
  132. package/dist/llm/skills.js +0 -804
  133. package/dist/llm/skills.js.map +0 -1
  134. package/dist/quality/index.d.ts +0 -3
  135. package/dist/quality/index.d.ts.map +0 -1
  136. package/dist/quality/index.js +0 -3
  137. package/dist/quality/index.js.map +0 -1
  138. package/dist/quality/quality-controller.d.ts +0 -2
  139. package/dist/quality/quality-controller.d.ts.map +0 -1
  140. package/dist/quality/quality-controller.js +0 -2
  141. package/dist/quality/quality-controller.js.map +0 -1
  142. package/dist/quality/sla-monitor.d.ts +0 -2
  143. package/dist/quality/sla-monitor.d.ts.map +0 -1
  144. package/dist/quality/sla-monitor.js +0 -2
  145. package/dist/quality/sla-monitor.js.map +0 -1
  146. package/dist/scheduling/cron.d.ts +0 -2
  147. package/dist/scheduling/cron.d.ts.map +0 -1
  148. package/dist/scheduling/cron.js +0 -2
  149. package/dist/scheduling/cron.js.map +0 -1
  150. package/dist/scheduling/index.d.ts +0 -3
  151. package/dist/scheduling/index.d.ts.map +0 -1
  152. package/dist/scheduling/index.js +0 -3
  153. package/dist/scheduling/index.js.map +0 -1
  154. package/dist/scheduling/scheduler.d.ts +0 -2
  155. package/dist/scheduling/scheduler.d.ts.map +0 -1
  156. package/dist/scheduling/scheduler.js +0 -2
  157. package/dist/scheduling/scheduler.js.map +0 -1
  158. package/dist/server/app.d.ts +0 -19
  159. package/dist/server/app.d.ts.map +0 -1
  160. package/dist/server/app.js +0 -302
  161. package/dist/server/app.js.map +0 -1
  162. package/dist/server/deps.d.ts +0 -157
  163. package/dist/server/deps.d.ts.map +0 -1
  164. package/dist/server/deps.js +0 -9
  165. package/dist/server/deps.js.map +0 -1
  166. package/dist/server/middleware/auth.d.ts +0 -3
  167. package/dist/server/middleware/auth.d.ts.map +0 -1
  168. package/dist/server/middleware/auth.js +0 -35
  169. package/dist/server/middleware/auth.js.map +0 -1
  170. package/dist/server/middleware/error.d.ts +0 -15
  171. package/dist/server/middleware/error.d.ts.map +0 -1
  172. package/dist/server/middleware/error.js +0 -44
  173. package/dist/server/middleware/error.js.map +0 -1
  174. package/dist/server/middleware/rate-limit.d.ts +0 -16
  175. package/dist/server/middleware/rate-limit.d.ts.map +0 -1
  176. package/dist/server/middleware/rate-limit.js +0 -51
  177. package/dist/server/middleware/rate-limit.js.map +0 -1
  178. package/dist/server/routes/config.d.ts +0 -25
  179. package/dist/server/routes/config.d.ts.map +0 -1
  180. package/dist/server/routes/config.js +0 -446
  181. package/dist/server/routes/config.js.map +0 -1
  182. package/dist/server/routes/files.d.ts +0 -11
  183. package/dist/server/routes/files.d.ts.map +0 -1
  184. package/dist/server/routes/files.js +0 -514
  185. package/dist/server/routes/files.js.map +0 -1
  186. package/dist/server/routes/filesystem.d.ts +0 -3
  187. package/dist/server/routes/filesystem.d.ts.map +0 -1
  188. package/dist/server/routes/filesystem.js +0 -152
  189. package/dist/server/routes/filesystem.js.map +0 -1
  190. package/dist/server/routes/providers.d.ts +0 -7
  191. package/dist/server/routes/providers.d.ts.map +0 -1
  192. package/dist/server/routes/providers.js +0 -256
  193. package/dist/server/routes/providers.js.map +0 -1
  194. package/dist/server/routes/skills.d.ts +0 -11
  195. package/dist/server/routes/skills.d.ts.map +0 -1
  196. package/dist/server/routes/skills.js +0 -543
  197. package/dist/server/routes/skills.js.map +0 -1
  198. package/dist/server/security.d.ts +0 -34
  199. package/dist/server/security.d.ts.map +0 -1
  200. package/dist/server/security.js +0 -118
  201. package/dist/server/security.js.map +0 -1
  202. package/dist/server/sse-bridge.d.ts +0 -36
  203. package/dist/server/sse-bridge.d.ts.map +0 -1
  204. package/dist/server/sse-bridge.js +0 -110
  205. package/dist/server/sse-bridge.js.map +0 -1
  206. package/dist/server/types.d.ts +0 -69
  207. package/dist/server/types.d.ts.map +0 -1
  208. package/dist/server/types.js +0 -2
  209. package/dist/server/types.js.map +0 -1
  210. package/dist/setup/env-persistence.d.ts +0 -9
  211. package/dist/setup/env-persistence.d.ts.map +0 -1
  212. package/dist/setup/env-persistence.js +0 -42
  213. package/dist/setup/env-persistence.js.map +0 -1
  214. package/dist/setup/index.d.ts +0 -32
  215. package/dist/setup/index.d.ts.map +0 -1
  216. package/dist/setup/index.js +0 -24
  217. package/dist/setup/index.js.map +0 -1
  218. package/dist/setup/models.d.ts +0 -20
  219. package/dist/setup/models.d.ts.map +0 -1
  220. package/dist/setup/models.js +0 -33
  221. package/dist/setup/models.js.map +0 -1
  222. package/dist/setup/providers.d.ts +0 -26
  223. package/dist/setup/providers.d.ts.map +0 -1
  224. package/dist/setup/providers.js +0 -31
  225. package/dist/setup/providers.js.map +0 -1
  226. package/dist/vault/encrypted-store.d.ts +0 -45
  227. package/dist/vault/encrypted-store.d.ts.map +0 -1
  228. package/dist/vault/encrypted-store.js +0 -149
  229. package/dist/vault/encrypted-store.js.map +0 -1
  230. package/dist/vault/index.d.ts +0 -4
  231. package/dist/vault/index.d.ts.map +0 -1
  232. package/dist/vault/index.js +0 -3
  233. package/dist/vault/index.js.map +0 -1
  234. package/dist/vault/resolver.d.ts +0 -8
  235. package/dist/vault/resolver.d.ts.map +0 -1
  236. package/dist/vault/resolver.js +0 -8
  237. package/dist/vault/resolver.js.map +0 -1
@@ -1,14 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Detached subprocess runner.
4
- * Spawned by the orchestrator for each agent task.
5
- * Lifecycle:
6
- * 1. Read --config <path> from args
7
- * 2. Open own RunStore connection (Drizzle SQLite or PG)
8
- * 3. Spawn agent via built-in engine
9
- * 4. Poll activity, write to RunStore
10
- * 5. Await handle.done, write result
11
- * 6. Cleanup & exit
3
+ * Detached subprocess runner — historical entry path.
4
+ *
5
+ * The cloud sandbox executes `node_modules/polpo-ai/dist/core/runner.js`
6
+ * directly, so this path must keep working: the actual runner (which
7
+ * self-executes on import) lives in @polpo-ai/node.
12
8
  */
13
- export {};
9
+ import "@polpo-ai/node/runner";
14
10
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AACH,OAAO,uBAAuB,CAAC"}
@@ -1,299 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Detached subprocess runner.
4
- * Spawned by the orchestrator for each agent task.
5
- * Lifecycle:
6
- * 1. Read --config <path> from args
7
- * 2. Open own RunStore connection (Drizzle SQLite or PG)
8
- * 3. Spawn agent via built-in engine
9
- * 4. Poll activity, write to RunStore
10
- * 5. Await handle.done, write result
11
- * 6. Cleanup & exit
3
+ * Detached subprocess runner — historical entry path.
4
+ *
5
+ * The cloud sandbox executes `node_modules/polpo-ai/dist/core/runner.js`
6
+ * directly, so this path must keep working: the actual runner (which
7
+ * self-executes on import) lives in @polpo-ai/node.
12
8
  */
13
- import { readFileSync, unlinkSync, appendFileSync, mkdirSync, existsSync } from "node:fs";
14
- import { join } from "node:path";
15
- import { FileRunStore } from "@polpo-ai/file-stores";
16
- import { spawnLoopEngine } from "../adapters/loop-engine.js";
17
- import { sanitizeTranscriptEntry } from "../server/security.js";
18
- import { EncryptedVaultStore } from "../vault/encrypted-store.js";
19
- import { FileMemoryStore } from "@polpo-ai/file-stores";
20
- import { NodeFileSystem } from "../adapters/node-filesystem.js";
21
- import { NodeShell } from "../adapters/node-shell.js";
22
- const ACTIVITY_POLL_MS = 1500;
23
- function readConfigFromFile() {
24
- const idx = process.argv.indexOf("--config");
25
- if (idx < 0 || !process.argv[idx + 1]) {
26
- console.error("Usage: runner --config <path> | --run-id <id> --db <url>");
27
- process.exit(1);
28
- }
29
- const configPath = process.argv[idx + 1];
30
- const raw = readFileSync(configPath, "utf-8");
31
- try {
32
- return JSON.parse(raw);
33
- }
34
- catch (err) {
35
- console.error(`Failed to parse runner config at ${configPath}:`, err instanceof Error ? err.message : err);
36
- process.exit(1);
37
- }
38
- }
39
- /**
40
- * DB mode: read RunnerConfig from database via RunStore.
41
- * Usage: runner --run-id <id> --db <postgres-url>
42
- */
43
- async function readConfigFromDb() {
44
- const runIdIdx = process.argv.indexOf("--run-id");
45
- const dbIdx = process.argv.indexOf("--db");
46
- if (runIdIdx < 0 || dbIdx < 0 || !process.argv[runIdIdx + 1] || !process.argv[dbIdx + 1]) {
47
- console.error("Usage: runner --run-id <id> --db <postgres-url>");
48
- process.exit(1);
49
- }
50
- const runId = process.argv[runIdIdx + 1];
51
- const dbUrl = process.argv[dbIdx + 1];
52
- const { createPgStores } = await import("@polpo-ai/drizzle");
53
- const postgres = (await import("postgres")).default;
54
- const { drizzle } = await import("drizzle-orm/postgres-js");
55
- const sql = postgres(dbUrl);
56
- const db = drizzle(sql);
57
- const store = createPgStores(db).runStore;
58
- const run = await store.getRun(runId);
59
- if (!run?.config) {
60
- console.error(`Run ${runId} not found or has no config in DB`);
61
- await sql.end();
62
- process.exit(1);
63
- }
64
- await sql.end();
65
- return run.config;
66
- }
67
- function errorResult(err) {
68
- const msg = err instanceof Error ? err.message : String(err);
69
- return { exitCode: 1, stdout: "", stderr: `Runner error: ${msg}`, duration: 0 };
70
- }
71
- /** Persistent per-run activity log (JSONL file in .polpo/logs/) */
72
- class RunActivityLog {
73
- logPath;
74
- lastSnapshot = "";
75
- constructor(polpoDir, runId, taskId, agentName) {
76
- const logsDir = join(polpoDir, "logs");
77
- if (!existsSync(logsDir))
78
- mkdirSync(logsDir, { recursive: true });
79
- this.logPath = join(logsDir, `run-${runId}.jsonl`);
80
- // Write header
81
- this.write({ _run: true, runId, taskId, agentName, startedAt: new Date().toISOString(), pid: process.pid });
82
- }
83
- /** Log activity diff — only writes if something changed */
84
- logActivity(activity) {
85
- const snapshot = JSON.stringify(activity);
86
- if (snapshot === this.lastSnapshot)
87
- return;
88
- this.lastSnapshot = snapshot;
89
- this.write({ ts: new Date().toISOString(), event: "activity", data: activity });
90
- }
91
- /** Log a transcript entry from the engine (assistant text, tool_use, tool_result, etc.) */
92
- logTranscript(entry) {
93
- this.write({ ts: new Date().toISOString(), ...sanitizeTranscriptEntry(entry) });
94
- }
95
- /** Log a lifecycle event */
96
- logEvent(event, data) {
97
- this.write({ ts: new Date().toISOString(), event, ...(data ? { data } : {}) });
98
- }
99
- write(obj) {
100
- try {
101
- appendFileSync(this.logPath, JSON.stringify(obj) + "\n", "utf-8");
102
- }
103
- catch { /* best effort */ }
104
- }
105
- }
106
- async function createStores(config) {
107
- if (config.storage === "postgres" && config.databaseUrl) {
108
- const { createPgStores } = await import("@polpo-ai/drizzle");
109
- const postgres = (await import("postgres")).default;
110
- const { drizzle } = await import("drizzle-orm/postgres-js");
111
- const sql = postgres(config.databaseUrl);
112
- const db = drizzle(sql);
113
- const stores = createPgStores(db);
114
- return { runStore: stores.runStore, logStore: stores.logStore, vaultStore: stores.vaultStore, memoryStore: stores.memoryStore };
115
- }
116
- if (config.storage === "sqlite") {
117
- const { createSqliteStores } = await import("@polpo-ai/drizzle");
118
- const { createRequire } = await import("node:module");
119
- const req = createRequire(import.meta.url);
120
- const Database = req("better-sqlite3");
121
- const dbPath = join(config.polpoDir, "state.db");
122
- const sqlite = new Database(dbPath);
123
- sqlite.exec("PRAGMA journal_mode = WAL");
124
- sqlite.exec("PRAGMA synchronous = NORMAL");
125
- sqlite.exec("PRAGMA foreign_keys = ON");
126
- const { ensureSqliteSchema } = await import("./drizzle-sqlite-schema.js");
127
- ensureSqliteSchema(sqlite);
128
- const { drizzle } = await import("drizzle-orm/better-sqlite3");
129
- const db = drizzle(sqlite);
130
- const stores = createSqliteStores(db);
131
- return { runStore: stores.runStore, logStore: stores.logStore, vaultStore: stores.vaultStore, memoryStore: stores.memoryStore };
132
- }
133
- return { runStore: new FileRunStore(config.polpoDir) };
134
- }
135
- async function main() {
136
- const isDbMode = process.argv.includes("--run-id");
137
- const config = isDbMode ? await readConfigFromDb() : readConfigFromFile();
138
- // Apply provider overrides from the config (custom baseUrl endpoints).
139
- // The runner never reads polpo.json, so without this custom-provider
140
- // agents resolve against the static provider map and fail.
141
- if (config.providers && Object.keys(config.providers).length > 0) {
142
- const { setProviderOverrides } = await import("../llm/pi-client.js");
143
- setProviderOverrides(config.providers);
144
- }
145
- const { runStore, logStore, vaultStore: drizzleVaultStore, memoryStore: drizzleMemoryStore } = await createStores(config);
146
- const actLog = new RunActivityLog(config.polpoDir, config.runId, config.taskId, config.agent.name);
147
- // When LogStore is available (postgres/sqlite), persist transcript to DB.
148
- // This ensures transcript survives sandbox destruction.
149
- let logSessionId;
150
- if (logStore) {
151
- logSessionId = await logStore.startSession();
152
- }
153
- const now = new Date().toISOString();
154
- const initialRecord = {
155
- id: config.runId,
156
- taskId: config.taskId,
157
- pid: process.pid,
158
- agentName: config.agent.name,
159
- status: "running",
160
- startedAt: now,
161
- updatedAt: now,
162
- // sessionId starts at the LogStore session we just opened, so the
163
- // run record is linked to its transcript from the very first poll.
164
- // Without this, downstream readers (the cloud task-activity endpoint,
165
- // a future dashboard, anything that joins runs to log sessions) have
166
- // to guess by time-proximity — fragile on cold sandboxes where the
167
- // log session is created hundreds of ms before the first stream
168
- // chunk lands. In file mode this is mostly cosmetic because
169
- // RunActivityLog writes a parallel JSONL side-channel; in DB mode
170
- // (cloud) it's the only link that ever gets persisted.
171
- activity: {
172
- filesCreated: [], filesEdited: [], toolCalls: 0, totalTokens: 0, lastUpdate: now,
173
- ...(logSessionId ? { sessionId: logSessionId } : {}),
174
- },
175
- configPath: isDbMode ? `db://${config.runId}` : join(process.argv[process.argv.indexOf("--config") + 1]),
176
- };
177
- // In DB mode, run record already exists (created by spawner) — update it with PID
178
- await runStore.upsertRun(initialRecord);
179
- actLog.logEvent("spawning", { task: config.task.title });
180
- let handle;
181
- try {
182
- // Use Drizzle vault store when available (postgres/sqlite), fall back to file-based
183
- let vaultStore = drizzleVaultStore;
184
- if (!vaultStore) {
185
- try {
186
- vaultStore = new EncryptedVaultStore(config.polpoDir);
187
- }
188
- catch { /* vault unavailable */ }
189
- }
190
- const memoryStore = drizzleMemoryStore ?? new FileMemoryStore(config.polpoDir);
191
- const spawnCtx = {
192
- polpoDir: config.polpoDir,
193
- outputDir: config.outputDir,
194
- emailAllowedDomains: config.emailAllowedDomains,
195
- reasoning: config.reasoning,
196
- vaultStore,
197
- memoryStore,
198
- // Runner is a subprocess — creates its own fs/shell instances
199
- fs: new NodeFileSystem(),
200
- shell: new NodeShell(),
201
- };
202
- handle = spawnLoopEngine(config.agent, config.task, config.cwd, spawnCtx);
203
- // Propagate the LogStore sessionId onto the agent's activity blob so
204
- // the poll loop's updateActivity() persists it on every tick. Without
205
- // this the run record has activity.sessionId = undefined forever, and
206
- // downstream readers (cloud task-activity endpoint, dashboards) can't
207
- // resolve the transcript except via fragile time-proximity fallback.
208
- if (logSessionId) {
209
- handle.activity.sessionId = logSessionId;
210
- }
211
- // Wire transcript persistence — every agent message gets written to the run log
212
- handle.onTranscript = (entry) => {
213
- actLog.logTranscript(entry);
214
- // Persist transcript to DB when LogStore is available
215
- if (logStore && logSessionId) {
216
- const event = entry.type === "assistant" ? "transcript:assistant"
217
- : entry.type === "tool_result" ? "transcript:tool_result"
218
- : entry.type === "tool_use" ? "transcript:tool_use"
219
- : `transcript:${entry.type ?? "unknown"}`;
220
- logStore.append({ ts: new Date().toISOString(), event, data: sanitizeTranscriptEntry(entry) })
221
- .catch(() => { }); // best-effort, don't block engine
222
- }
223
- };
224
- actLog.logEvent("spawned");
225
- }
226
- catch (err) {
227
- const result = errorResult(err);
228
- actLog.logEvent("error", { message: result.stderr });
229
- await runStore.completeRun(config.runId, "failed", result);
230
- await runStore.close();
231
- process.exit(1);
232
- }
233
- // Activity polling + persistent logging
234
- const poll = setInterval(async () => {
235
- try {
236
- await runStore.updateActivity(config.runId, handle.activity);
237
- actLog.logActivity({ ...handle.activity });
238
- }
239
- catch { /* DB temporarily locked */
240
- }
241
- }, ACTIVITY_POLL_MS);
242
- // SIGTERM handler: graceful kill
243
- let sigterm = false;
244
- process.on("SIGTERM", () => {
245
- sigterm = true;
246
- actLog.logEvent("sigterm");
247
- handle.kill();
248
- });
249
- try {
250
- const result = await handle.done;
251
- clearInterval(poll);
252
- // Final activity + sessionId flush before marking terminal
253
- try {
254
- await runStore.updateActivity(config.runId, handle.activity);
255
- }
256
- catch { /* best effort */ }
257
- actLog.logActivity({ ...handle.activity });
258
- // Store auto-collected outcomes on the run record
259
- if (handle.outcomes && handle.outcomes.length > 0) {
260
- try {
261
- await runStore.updateOutcomes(config.runId, handle.outcomes);
262
- }
263
- catch { /* best effort */ }
264
- actLog.logEvent("outcomes", { count: handle.outcomes.length, types: handle.outcomes.map((o) => o.type) });
265
- }
266
- // If we received SIGTERM (timeout/shutdown), force exitCode=1 regardless of
267
- // what the engine returned — an aborted task is not a successful task.
268
- if (sigterm) {
269
- result.exitCode = 1;
270
- result.stderr = (result.stderr ? result.stderr + "\n" : "") + "Killed by SIGTERM (timeout or shutdown)";
271
- }
272
- const status = sigterm ? "killed" : (result.exitCode === 0 ? "completed" : "failed");
273
- actLog.logEvent("done", { status, exitCode: result.exitCode, duration: result.duration });
274
- await runStore.completeRun(config.runId, status, result);
275
- }
276
- catch (err) {
277
- clearInterval(poll);
278
- try {
279
- await runStore.updateActivity(config.runId, handle.activity);
280
- }
281
- catch { /* best effort */ }
282
- actLog.logEvent("error", { message: err instanceof Error ? err.message : String(err) });
283
- await runStore.completeRun(config.runId, "failed", errorResult(err));
284
- }
285
- // Cleanup config file (only in file mode, not DB mode)
286
- if (!isDbMode) {
287
- try {
288
- unlinkSync(join(process.argv[process.argv.indexOf("--config") + 1]));
289
- }
290
- catch { /* already gone */ }
291
- }
292
- await runStore.close();
293
- process.exit(0);
294
- }
295
- main().catch((err) => {
296
- console.error("Runner fatal error:", err);
297
- process.exit(1);
298
- });
9
+ import "@polpo-ai/node/runner";
299
10
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AACH,OAAO,uBAAuB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,24 +1,7 @@
1
- export * from "./core/index.js";
2
- export { FileTaskStore, FileRunStore, JsonTaskStore } from "@polpo-ai/file-stores";
3
- export { spawnLoopEngine, spawnLoopEngine as spawnEngine } from "./adapters/loop-engine.js";
4
- export { assessTask, runCheck, runMetric } from "./assessment/assessor.js";
5
- export { runLLMReview, computeWeightedScore, buildRubricSection, DEFAULT_DIMENSIONS, validateReviewPayload, ReviewPayloadSchema, findLogForTask, buildExecutionSummary } from "./assessment/index.js";
6
- export type { LLMQueryFn } from "./assessment/llm-review.js";
7
- export type { ValidatedReviewPayload, ExecutionSummaryResult } from "./assessment/index.js";
8
- export { PolpoServer, createApp, SSEBridge } from "./server/index.js";
9
- export type { AppOptions } from "./server/index.js";
10
- export type { ServerConfig, ApiResponse, ApiError, SSEEvent, CreateTaskRequest, UpdateTaskRequest, CreateMissionRequest, UpdateMissionRequest, AddAgentRequest, } from "./server/index.js";
11
- export { taskRoutes, missionRoutes, agentRoutes, eventRoutes, chatRoutes, skillRoutes, approvalRoutes, playbookRoutes, stateRoutes, completionRoutes, scheduleRoutes, watcherRoutes, vaultRoutes, fileRoutes, configRoutes, publicConfigRoutes, healthRoutes, } from "./server/index.js";
12
- export { safeEnv, bashSafeEnv } from "@polpo-ai/tools";
13
- export { createSystemTools, createSystemTools as createCodingTools, createAllTools, TOOL_CATALOG } from "@polpo-ai/tools";
14
- export type { ExtendedToolName, CreateAllToolsOptions } from "@polpo-ai/tools";
15
- export { createBrowserTools, ALL_BROWSER_TOOL_NAMES } from "@polpo-ai/tools";
16
- export { createHttpTools, ALL_HTTP_TOOL_NAMES } from "@polpo-ai/tools";
17
- export { createExcelTools, ALL_EXCEL_TOOL_NAMES } from "@polpo-ai/tools";
18
- export { createPdfTools, ALL_PDF_TOOL_NAMES } from "@polpo-ai/tools";
19
- export { createDocxTools, ALL_DOCX_TOOL_NAMES } from "@polpo-ai/tools";
20
- export { createEmailTools, ALL_EMAIL_TOOL_NAMES } from "@polpo-ai/tools";
21
- export { createVaultTools, ALL_VAULT_TOOL_NAMES } from "@polpo-ai/tools";
22
- export { createAudioTools, ALL_AUDIO_TOOL_NAMES } from "@polpo-ai/tools";
23
- export { createImageTools, ALL_IMAGE_TOOL_NAMES } from "@polpo-ai/tools";
1
+ /**
2
+ * polpo-ai — public facade.
3
+ * The Node.js runtime lives in @polpo-ai/node (the composition root);
4
+ * this package re-exports it and preserves the historical entry paths.
5
+ */
6
+ export * from "@polpo-ai/node";
24
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAInF,OAAO,EAAE,eAAe,EAAE,eAAe,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG5F,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACtM,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAG5F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1H,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,29 +1,7 @@
1
- // Core abstractions (includes orchestrator, config, session-reader, state-machine,
2
- // types, events, hooks, playbooks, templates, ink, quality, scheduling, etc.)
3
- export * from "./core/index.js";
4
- // Stores
5
- export { FileTaskStore, FileRunStore, JsonTaskStore } from "@polpo-ai/file-stores";
6
- // Engine — spawnEngine is a compatibility alias for spawnLoopEngine (the
7
- // legacy manual loop was removed after the loop runtime reached parity).
8
- export { spawnLoopEngine, spawnLoopEngine as spawnEngine } from "./adapters/loop-engine.js";
9
- // Assessment
10
- export { assessTask, runCheck, runMetric } from "./assessment/assessor.js";
11
- export { runLLMReview, computeWeightedScore, buildRubricSection, DEFAULT_DIMENSIONS, validateReviewPayload, ReviewPayloadSchema, findLogForTask, buildExecutionSummary } from "./assessment/index.js";
12
- // Server
13
- export { PolpoServer, createApp, SSEBridge } from "./server/index.js";
14
- // Route factories (for data-plane wiring)
15
- export { taskRoutes, missionRoutes, agentRoutes, eventRoutes, chatRoutes, skillRoutes, approvalRoutes, playbookRoutes, stateRoutes, completionRoutes, scheduleRoutes, watcherRoutes, vaultRoutes, fileRoutes, configRoutes, publicConfigRoutes, healthRoutes, } from "./server/index.js";
16
- // Security
17
- export { safeEnv, bashSafeEnv } from "@polpo-ai/tools";
18
- // Extended Tools
19
- export { createSystemTools, createSystemTools as createCodingTools, createAllTools, TOOL_CATALOG } from "@polpo-ai/tools";
20
- export { createBrowserTools, ALL_BROWSER_TOOL_NAMES } from "@polpo-ai/tools";
21
- export { createHttpTools, ALL_HTTP_TOOL_NAMES } from "@polpo-ai/tools";
22
- export { createExcelTools, ALL_EXCEL_TOOL_NAMES } from "@polpo-ai/tools";
23
- export { createPdfTools, ALL_PDF_TOOL_NAMES } from "@polpo-ai/tools";
24
- export { createDocxTools, ALL_DOCX_TOOL_NAMES } from "@polpo-ai/tools";
25
- export { createEmailTools, ALL_EMAIL_TOOL_NAMES } from "@polpo-ai/tools";
26
- export { createVaultTools, ALL_VAULT_TOOL_NAMES } from "@polpo-ai/tools";
27
- export { createAudioTools, ALL_AUDIO_TOOL_NAMES } from "@polpo-ai/tools";
28
- export { createImageTools, ALL_IMAGE_TOOL_NAMES } from "@polpo-ai/tools";
1
+ /**
2
+ * polpo-ai — public facade.
3
+ * The Node.js runtime lives in @polpo-ai/node (the composition root);
4
+ * this package re-exports it and preserves the historical entry paths.
5
+ */
6
+ export * from "@polpo-ai/node";
29
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,8EAA8E;AAC9E,cAAc,iBAAiB,CAAC;AAEhC,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEnF,yEAAyE;AACzE,yEAAyE;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE5F,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAItM,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AActE,0CAA0C;AAC1C,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEvD,iBAAiB;AACjB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE1H,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,gBAAgB,CAAC"}
@@ -1,43 +1,3 @@
1
- import { Orchestrator } from "../core/orchestrator.js";
2
- import type { ServerConfig } from "./types.js";
3
- /**
4
- * Polpo HTTP Server.
5
- *
6
- * Single-orchestrator architecture. Manages one Polpo instance via HTTP API + SSE streaming.
7
- *
8
- * Usage:
9
- * const server = new PolpoServer({
10
- * port: 3890,
11
- * host: "0.0.0.0",
12
- * workDir: "./my-project",
13
- * autoStart: true,
14
- * });
15
- * await server.start();
16
- */
17
- export declare class PolpoServer {
18
- private config;
19
- private orchestrator;
20
- private sseBridge;
21
- private server;
22
- private shutdownHandlers;
23
- constructor(config: ServerConfig);
24
- /** Initialize the orchestrator (called at start or after setup completes). */
25
- private initOrchestrator;
26
- /** Called by the initialize endpoint to transition from uninitialized → ready. */
27
- completeSetup(workDir: string): Promise<void>;
28
- /** Start the server: init orchestrator if config exists, bind HTTP. */
29
- start(): Promise<void>;
30
- /** Graceful shutdown: stop orchestrator, close HTTP server. */
31
- stop(): Promise<void>;
32
- /** Get the orchestrator (for programmatic access). */
33
- getOrchestrator(): Orchestrator;
34
- }
35
- export { createApp } from "./app.js";
36
- export type { AppOptions } from "./app.js";
37
- export { SSEBridge } from "./sse-bridge.js";
38
- export type { ServerConfig, ApiResponse, ApiError, SSEEvent, CreateTaskRequest, UpdateTaskRequest, CreateMissionRequest, UpdateMissionRequest, AddAgentRequest, } from "./types.js";
39
- export { taskRoutes, missionRoutes, chatRoutes, approvalRoutes, playbookRoutes, stateRoutes, completionRoutes, scheduleRoutes, watcherRoutes, vaultRoutes, healthRoutes, agentRoutes, eventRoutes, configRoutes, } from "@polpo-ai/server";
40
- export { skillRoutes } from "./routes/skills.js";
41
- export { fileRoutes } from "./routes/files.js";
42
- export { publicConfigRoutes } from "./routes/config.js";
1
+ /** polpo-ai/server — facade over @polpo-ai/node/server. */
2
+ export * from "@polpo-ai/node/server";
43
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAW;IAMV,OAAO,CAAC,MAAM;IAL1B,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,gBAAgB,CAAsB;gBAE1B,MAAM,EAAE,YAAY;IAExC,8EAA8E;YAChE,gBAAgB;IAiB9B,kFAAkF;IAC5E,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,uEAAuE;IACjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2D5B,+DAA+D;IACzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,sDAAsD;IACtD,eAAe,IAAI,YAAY;CAGhC;AAGD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EACrD,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAC7D,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,GACjF,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc,uBAAuB,CAAC"}
@@ -1,128 +1,3 @@
1
- import { existsSync } from "node:fs";
2
- import { resolve, basename, join } from "node:path";
3
- import { getPolpoDir } from "../core/constants.js";
4
- import { serve } from "@hono/node-server";
5
- import { createApp } from "./app.js";
6
- import { Orchestrator } from "../core/orchestrator.js";
7
- import { SSEBridge } from "./sse-bridge.js";
8
- /**
9
- * Polpo HTTP Server.
10
- *
11
- * Single-orchestrator architecture. Manages one Polpo instance via HTTP API + SSE streaming.
12
- *
13
- * Usage:
14
- * const server = new PolpoServer({
15
- * port: 3890,
16
- * host: "0.0.0.0",
17
- * workDir: "./my-project",
18
- * autoStart: true,
19
- * });
20
- * await server.start();
21
- */
22
- export class PolpoServer {
23
- config;
24
- orchestrator;
25
- sseBridge;
26
- server = null;
27
- shutdownHandlers = [];
28
- constructor(config) {
29
- this.config = config;
30
- }
31
- /** Initialize the orchestrator (called at start or after setup completes). */
32
- async initOrchestrator(overrideWorkDir) {
33
- const workDir = resolve(overrideWorkDir ?? this.config.workDir);
34
- const defaultTeam = {
35
- name: "default",
36
- agents: [{ name: "dev-1", role: "developer" }],
37
- };
38
- await this.orchestrator.initInteractive(basename(workDir), defaultTeam);
39
- // (Re-)create SSE bridge
40
- this.sseBridge?.dispose();
41
- this.sseBridge = new SSEBridge(this.orchestrator);
42
- this.sseBridge.start();
43
- console.log("\n Orchestrator initialized — dashboard is ready.\n");
44
- }
45
- /** Called by the initialize endpoint to transition from uninitialized → ready. */
46
- async completeSetup(workDir) {
47
- this.orchestrator.resetWorkDir(workDir);
48
- await this.initOrchestrator(workDir);
49
- }
50
- /** Start the server: init orchestrator if config exists, bind HTTP. */
51
- async start() {
52
- const workDir = resolve(this.config.workDir);
53
- this.orchestrator = new Orchestrator(workDir);
54
- const configPath = join(getPolpoDir(workDir), "polpo.json");
55
- const hasConfig = existsSync(configPath);
56
- if (hasConfig) {
57
- await this.initOrchestrator();
58
- if (this.config.autoStart !== false) {
59
- this.orchestrator.run().catch((err) => {
60
- console.error(`[PolpoServer] Supervisor loop crashed:`, err instanceof Error ? err.message : err);
61
- });
62
- }
63
- }
64
- else {
65
- // No config yet — placeholder SSE bridge, orchestrator will be initialized after setup
66
- this.sseBridge = new SSEBridge(this.orchestrator);
67
- }
68
- const app = createApp(this.orchestrator, this.sseBridge, {
69
- apiKeys: this.config.apiKeys,
70
- corsOrigins: this.config.corsOrigins,
71
- workDir,
72
- onInitialize: (workDir) => this.completeSetup(workDir),
73
- });
74
- this.server = serve({
75
- fetch: app.fetch,
76
- port: this.config.port,
77
- hostname: this.config.host,
78
- });
79
- // Disable Node 18+ requestTimeout (default 5 min). This is a wall-clock
80
- // timer — NOT idle-based — so it kills long-running streaming responses
81
- // (e.g. multi-turn tool loops in chat completions) even when data is
82
- // actively flowing. Setting to 0 disables it entirely.
83
- // See: https://nodejs.org/api/http.html#serverrequesttimeout
84
- if ("requestTimeout" in this.server) {
85
- this.server.requestTimeout = 0;
86
- }
87
- const base = `http://${this.config.host}:${this.config.port}`;
88
- console.log(`\n Listening ${base}`);
89
- console.log(` WorkDir ${workDir}`);
90
- console.log(` API ${base}/api/v1/health`);
91
- console.log();
92
- // Signal handlers for graceful shutdown
93
- const onSignal = () => { this.stop(); };
94
- process.on("SIGTERM", onSignal);
95
- process.on("SIGINT", onSignal);
96
- this.shutdownHandlers.push(() => {
97
- process.off("SIGTERM", onSignal);
98
- process.off("SIGINT", onSignal);
99
- });
100
- }
101
- /** Graceful shutdown: stop orchestrator, close HTTP server. */
102
- async stop() {
103
- console.log("\nShutting down Polpo Server...");
104
- this.sseBridge?.dispose();
105
- if (this.orchestrator?.isInitialized) {
106
- await this.orchestrator.gracefulStop();
107
- }
108
- this.server?.close();
109
- for (const fn of this.shutdownHandlers)
110
- fn();
111
- console.log("Polpo Server stopped.");
112
- }
113
- /** Get the orchestrator (for programmatic access). */
114
- getOrchestrator() {
115
- return this.orchestrator;
116
- }
117
- }
118
- // Re-exports
119
- export { createApp } from "./app.js";
120
- export { SSEBridge } from "./sse-bridge.js";
121
- // Route factories — shared routes re-exported from @polpo-ai/server
122
- export { taskRoutes, missionRoutes, chatRoutes, approvalRoutes, playbookRoutes, stateRoutes, completionRoutes, scheduleRoutes, watcherRoutes, vaultRoutes, healthRoutes, agentRoutes, eventRoutes, configRoutes, } from "@polpo-ai/server";
123
- // eventRoutes now in @polpo-ai/server (decoupled with EventBridge interface)
124
- export { skillRoutes } from "./routes/skills.js";
125
- export { fileRoutes } from "./routes/files.js";
126
- // configRoutes now in @polpo-ai/server (decoupled with saveConfig dep)
127
- export { publicConfigRoutes } from "./routes/config.js";
1
+ /** polpo-ai/server — facade over @polpo-ai/node/server. */
2
+ export * from "@polpo-ai/node/server";
128
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc,uBAAuB,CAAC"}