@polpo-ai/node 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -0
- package/dist/adapters/engine.d.ts +51 -0
- package/dist/adapters/engine.d.ts.map +1 -0
- package/dist/adapters/engine.js +316 -0
- package/dist/adapters/engine.js.map +1 -0
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +4 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/loop-engine.d.ts +36 -0
- package/dist/adapters/loop-engine.d.ts.map +1 -0
- package/dist/adapters/loop-engine.js +534 -0
- package/dist/adapters/loop-engine.js.map +1 -0
- package/dist/adapters/node-filesystem.d.ts +22 -0
- package/dist/adapters/node-filesystem.d.ts.map +1 -0
- package/dist/adapters/node-filesystem.js +59 -0
- package/dist/adapters/node-filesystem.js.map +1 -0
- package/dist/adapters/node-shell.d.ts +5 -0
- package/dist/adapters/node-shell.d.ts.map +1 -0
- package/dist/adapters/node-shell.js +34 -0
- package/dist/adapters/node-shell.js.map +1 -0
- package/dist/adapters/node-spawner.d.ts +14 -0
- package/dist/adapters/node-spawner.d.ts.map +1 -0
- package/dist/adapters/node-spawner.js +103 -0
- package/dist/adapters/node-spawner.js.map +1 -0
- package/dist/assessment/assessor.d.ts +6 -0
- package/dist/assessment/assessor.d.ts.map +1 -0
- package/dist/assessment/assessor.js +37 -0
- package/dist/assessment/assessor.js.map +1 -0
- package/dist/assessment/index.d.ts +6 -0
- package/dist/assessment/index.d.ts.map +1 -0
- package/dist/assessment/index.js +6 -0
- package/dist/assessment/index.js.map +1 -0
- package/dist/assessment/llm-review.d.ts +34 -0
- package/dist/assessment/llm-review.d.ts.map +1 -0
- package/dist/assessment/llm-review.js +669 -0
- package/dist/assessment/llm-review.js.map +1 -0
- package/dist/assessment/schemas.d.ts +5 -0
- package/dist/assessment/schemas.d.ts.map +1 -0
- package/dist/assessment/schemas.js +5 -0
- package/dist/assessment/schemas.js.map +1 -0
- package/dist/assessment/scoring.d.ts +5 -0
- package/dist/assessment/scoring.d.ts.map +1 -0
- package/dist/assessment/scoring.js +5 -0
- package/dist/assessment/scoring.js.map +1 -0
- package/dist/assessment/transcript-parser.d.ts +31 -0
- package/dist/assessment/transcript-parser.d.ts.map +1 -0
- package/dist/assessment/transcript-parser.js +203 -0
- package/dist/assessment/transcript-parser.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +4 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/core/adapter.d.ts +62 -0
- package/dist/core/adapter.d.ts.map +1 -0
- package/dist/core/adapter.js +2 -0
- package/dist/core/adapter.js.map +1 -0
- package/dist/core/assessment-orchestrator.d.ts +18 -0
- package/dist/core/assessment-orchestrator.d.ts.map +1 -0
- package/dist/core/assessment-orchestrator.js +93 -0
- package/dist/core/assessment-orchestrator.js.map +1 -0
- package/dist/core/config.d.ts +17 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +272 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/constants.d.ts +10 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +11 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/deadlock-resolver.d.ts +35 -0
- package/dist/core/deadlock-resolver.d.ts.map +1 -0
- package/dist/core/deadlock-resolver.js +317 -0
- package/dist/core/deadlock-resolver.js.map +1 -0
- package/dist/core/drizzle-sqlite-schema.d.ts +8 -0
- package/dist/core/drizzle-sqlite-schema.d.ts.map +1 -0
- package/dist/core/drizzle-sqlite-schema.js +250 -0
- package/dist/core/drizzle-sqlite-schema.js.map +1 -0
- package/dist/core/events.d.ts +26 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +39 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/index.d.ts +37 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +31 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/ink.d.ts +165 -0
- package/dist/core/ink.d.ts.map +1 -0
- package/dist/core/ink.js +445 -0
- package/dist/core/ink.js.map +1 -0
- package/dist/core/orchestrator.d.ts +387 -0
- package/dist/core/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestrator.js +1015 -0
- package/dist/core/orchestrator.js.map +1 -0
- package/dist/core/question-detector.d.ts +19 -0
- package/dist/core/question-detector.d.ts.map +1 -0
- package/dist/core/question-detector.js +29 -0
- package/dist/core/question-detector.js.map +1 -0
- package/dist/core/runner.d.ts +14 -0
- package/dist/core/runner.d.ts.map +1 -0
- package/dist/core/runner.js +299 -0
- package/dist/core/runner.js.map +1 -0
- package/dist/core/session-reader.d.ts +46 -0
- package/dist/core/session-reader.d.ts.map +1 -0
- package/dist/core/session-reader.js +166 -0
- package/dist/core/session-reader.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/index.d.ts +8 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +21 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/pi-client.d.ts +8 -0
- package/dist/llm/pi-client.d.ts.map +1 -0
- package/dist/llm/pi-client.js +8 -0
- package/dist/llm/pi-client.js.map +1 -0
- package/dist/llm/prompts.d.ts +14 -0
- package/dist/llm/prompts.d.ts.map +1 -0
- package/dist/llm/prompts.js +1618 -0
- package/dist/llm/prompts.js.map +1 -0
- package/dist/llm/retry.d.ts +5 -0
- package/dist/llm/retry.d.ts.map +1 -0
- package/dist/llm/retry.js +5 -0
- package/dist/llm/retry.js.map +1 -0
- package/dist/llm/skills.d.ts +265 -0
- package/dist/llm/skills.d.ts.map +1 -0
- package/dist/llm/skills.js +804 -0
- package/dist/llm/skills.js.map +1 -0
- package/dist/quality/index.d.ts +3 -0
- package/dist/quality/index.d.ts.map +1 -0
- package/dist/quality/index.js +3 -0
- package/dist/quality/index.js.map +1 -0
- package/dist/quality/quality-controller.d.ts +2 -0
- package/dist/quality/quality-controller.d.ts.map +1 -0
- package/dist/quality/quality-controller.js +2 -0
- package/dist/quality/quality-controller.js.map +1 -0
- package/dist/quality/sla-monitor.d.ts +2 -0
- package/dist/quality/sla-monitor.d.ts.map +1 -0
- package/dist/quality/sla-monitor.js +2 -0
- package/dist/quality/sla-monitor.js.map +1 -0
- package/dist/scheduling/cron.d.ts +2 -0
- package/dist/scheduling/cron.d.ts.map +1 -0
- package/dist/scheduling/cron.js +2 -0
- package/dist/scheduling/cron.js.map +1 -0
- package/dist/scheduling/index.d.ts +3 -0
- package/dist/scheduling/index.d.ts.map +1 -0
- package/dist/scheduling/index.js +3 -0
- package/dist/scheduling/index.js.map +1 -0
- package/dist/scheduling/scheduler.d.ts +2 -0
- package/dist/scheduling/scheduler.d.ts.map +1 -0
- package/dist/scheduling/scheduler.js +2 -0
- package/dist/scheduling/scheduler.js.map +1 -0
- package/dist/server/app.d.ts +19 -0
- package/dist/server/app.d.ts.map +1 -0
- package/dist/server/app.js +302 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/deps.d.ts +157 -0
- package/dist/server/deps.d.ts.map +1 -0
- package/dist/server/deps.js +9 -0
- package/dist/server/deps.js.map +1 -0
- package/dist/server/index.d.ts +43 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +128 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/middleware/auth.d.ts +3 -0
- package/dist/server/middleware/auth.d.ts.map +1 -0
- package/dist/server/middleware/auth.js +35 -0
- package/dist/server/middleware/auth.js.map +1 -0
- package/dist/server/middleware/error.d.ts +15 -0
- package/dist/server/middleware/error.d.ts.map +1 -0
- package/dist/server/middleware/error.js +44 -0
- package/dist/server/middleware/error.js.map +1 -0
- package/dist/server/middleware/rate-limit.d.ts +16 -0
- package/dist/server/middleware/rate-limit.d.ts.map +1 -0
- package/dist/server/middleware/rate-limit.js +51 -0
- package/dist/server/middleware/rate-limit.js.map +1 -0
- package/dist/server/routes/config.d.ts +25 -0
- package/dist/server/routes/config.d.ts.map +1 -0
- package/dist/server/routes/config.js +446 -0
- package/dist/server/routes/config.js.map +1 -0
- package/dist/server/routes/files.d.ts +11 -0
- package/dist/server/routes/files.d.ts.map +1 -0
- package/dist/server/routes/files.js +514 -0
- package/dist/server/routes/files.js.map +1 -0
- package/dist/server/routes/filesystem.d.ts +3 -0
- package/dist/server/routes/filesystem.d.ts.map +1 -0
- package/dist/server/routes/filesystem.js +152 -0
- package/dist/server/routes/filesystem.js.map +1 -0
- package/dist/server/routes/providers.d.ts +7 -0
- package/dist/server/routes/providers.d.ts.map +1 -0
- package/dist/server/routes/providers.js +256 -0
- package/dist/server/routes/providers.js.map +1 -0
- package/dist/server/routes/skills.d.ts +11 -0
- package/dist/server/routes/skills.d.ts.map +1 -0
- package/dist/server/routes/skills.js +543 -0
- package/dist/server/routes/skills.js.map +1 -0
- package/dist/server/security.d.ts +34 -0
- package/dist/server/security.d.ts.map +1 -0
- package/dist/server/security.js +118 -0
- package/dist/server/security.js.map +1 -0
- package/dist/server/sse-bridge.d.ts +36 -0
- package/dist/server/sse-bridge.d.ts.map +1 -0
- package/dist/server/sse-bridge.js +110 -0
- package/dist/server/sse-bridge.js.map +1 -0
- package/dist/server/types.d.ts +69 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +2 -0
- package/dist/server/types.js.map +1 -0
- package/dist/setup/env-persistence.d.ts +9 -0
- package/dist/setup/env-persistence.d.ts.map +1 -0
- package/dist/setup/env-persistence.js +42 -0
- package/dist/setup/env-persistence.js.map +1 -0
- package/dist/setup/index.d.ts +32 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +24 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/models.d.ts +20 -0
- package/dist/setup/models.d.ts.map +1 -0
- package/dist/setup/models.js +33 -0
- package/dist/setup/models.js.map +1 -0
- package/dist/setup/providers.d.ts +26 -0
- package/dist/setup/providers.d.ts.map +1 -0
- package/dist/setup/providers.js +31 -0
- package/dist/setup/providers.js.map +1 -0
- package/dist/vault/encrypted-store.d.ts +45 -0
- package/dist/vault/encrypted-store.d.ts.map +1 -0
- package/dist/vault/encrypted-store.js +149 -0
- package/dist/vault/encrypted-store.js.map +1 -0
- package/dist/vault/index.d.ts +4 -0
- package/dist/vault/index.d.ts.map +1 -0
- package/dist/vault/index.js +3 -0
- package/dist/vault/index.js.map +1 -0
- package/dist/vault/resolver.d.ts +8 -0
- package/dist/vault/resolver.d.ts.map +1 -0
- package/dist/vault/resolver.js +8 -0
- package/dist/vault/resolver.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js Shell implementation — wraps execa.
|
|
3
|
+
*
|
|
4
|
+
* Default implementation for self-hosted mode. Executes real shell commands.
|
|
5
|
+
* Drop-in replacement pattern: swap with JustBashShell, SandboxProxyShell, etc.
|
|
6
|
+
*/
|
|
7
|
+
import { execaCommand } from "execa";
|
|
8
|
+
import { bashSafeEnv } from "@polpo-ai/tools";
|
|
9
|
+
export class NodeShell {
|
|
10
|
+
async execute(command, options) {
|
|
11
|
+
try {
|
|
12
|
+
const result = await execaCommand(command, {
|
|
13
|
+
shell: true,
|
|
14
|
+
cwd: options?.cwd,
|
|
15
|
+
env: { ...bashSafeEnv(), ...options?.env },
|
|
16
|
+
timeout: options?.timeout,
|
|
17
|
+
reject: false,
|
|
18
|
+
});
|
|
19
|
+
return {
|
|
20
|
+
stdout: result.stdout,
|
|
21
|
+
stderr: result.stderr,
|
|
22
|
+
exitCode: result.exitCode ?? 0,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
return {
|
|
27
|
+
stdout: "",
|
|
28
|
+
stderr: err.message ?? String(err),
|
|
29
|
+
exitCode: 1,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=node-shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-shell.js","sourceRoot":"","sources":["../../src/adapters/node-shell.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,OAAO,SAAS;IACpB,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,OAAsB;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE;gBACzC,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,OAAO,EAAE,GAAG;gBACjB,GAAG,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE;gBAC1C,OAAO,EAAE,OAAO,EAAE,OAAO;gBACzB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;aAC/B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;gBAClC,QAAQ,EAAE,CAAC;aACZ,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Spawner, SpawnResult } from "@polpo-ai/core/spawner";
|
|
2
|
+
import type { RunnerConfig } from "@polpo-ai/core/types";
|
|
3
|
+
export declare class NodeSpawner implements Spawner {
|
|
4
|
+
private polpoDir;
|
|
5
|
+
private cwd;
|
|
6
|
+
constructor(opts: {
|
|
7
|
+
polpoDir: string;
|
|
8
|
+
cwd: string;
|
|
9
|
+
});
|
|
10
|
+
spawn(config: RunnerConfig): Promise<SpawnResult>;
|
|
11
|
+
isAlive(pid: number): boolean;
|
|
12
|
+
kill(pid: number): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=node-spawner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-spawner.d.ts","sourceRoot":"","sources":["../../src/adapters/node-spawner.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qBAAa,WAAY,YAAW,OAAO;IACzC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,GAAG,CAAS;gBAER,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAK7C,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IA6DvD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAU7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CASxB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js Spawner implementation — wraps child_process.spawn.
|
|
3
|
+
*
|
|
4
|
+
* Default implementation for self-hosted mode. Spawns runner as a detached
|
|
5
|
+
* subprocess with config written to a temporary JSON file.
|
|
6
|
+
*
|
|
7
|
+
* Drop-in replacement pattern: swap with SandboxSpawner for remote execution.
|
|
8
|
+
*/
|
|
9
|
+
import { join, dirname } from "node:path";
|
|
10
|
+
import { mkdirSync, existsSync, writeFileSync } from "node:fs";
|
|
11
|
+
import { spawn as cpSpawn } from "node:child_process";
|
|
12
|
+
import { fileURLToPath } from "node:url";
|
|
13
|
+
export class NodeSpawner {
|
|
14
|
+
polpoDir;
|
|
15
|
+
cwd;
|
|
16
|
+
constructor(opts) {
|
|
17
|
+
this.polpoDir = opts.polpoDir;
|
|
18
|
+
this.cwd = opts.cwd;
|
|
19
|
+
}
|
|
20
|
+
async spawn(config) {
|
|
21
|
+
// Ensure output and tmp directories exist
|
|
22
|
+
const outputDir = config.outputDir;
|
|
23
|
+
if (!existsSync(outputDir)) {
|
|
24
|
+
mkdirSync(outputDir, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
const tmpDir = join(this.polpoDir, "tmp");
|
|
27
|
+
if (!existsSync(tmpDir)) {
|
|
28
|
+
mkdirSync(tmpDir, { recursive: true });
|
|
29
|
+
}
|
|
30
|
+
// Write config to temp file
|
|
31
|
+
const configPath = join(tmpDir, `run-${config.runId}.json`);
|
|
32
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
33
|
+
// Resolve runner path: prefer compiled .js, fall back to .ts via tsx (dev mode)
|
|
34
|
+
const baseDir = dirname(fileURLToPath(import.meta.url));
|
|
35
|
+
const coreDir = join(baseDir, "../core");
|
|
36
|
+
const runnerJs = join(coreDir, "runner.js");
|
|
37
|
+
const runnerTs = join(coreDir, "runner.ts");
|
|
38
|
+
const useTs = !existsSync(runnerJs) && existsSync(runnerTs);
|
|
39
|
+
const runnerPath = useTs ? runnerTs : runnerJs;
|
|
40
|
+
let spawnArgs;
|
|
41
|
+
if (useTs) {
|
|
42
|
+
const tsxCli = join(baseDir, "../../node_modules/tsx/dist/cli.mjs");
|
|
43
|
+
spawnArgs = existsSync(tsxCli)
|
|
44
|
+
? [process.execPath, tsxCli, runnerPath, "--config", configPath]
|
|
45
|
+
: [process.execPath, runnerPath, "--config", configPath];
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
spawnArgs = [process.execPath, runnerPath, "--config", configPath];
|
|
49
|
+
}
|
|
50
|
+
const child = cpSpawn(spawnArgs[0], spawnArgs.slice(1), {
|
|
51
|
+
detached: true,
|
|
52
|
+
stdio: "ignore",
|
|
53
|
+
cwd: this.cwd,
|
|
54
|
+
});
|
|
55
|
+
// Track process exit so the orchestrator can collect results
|
|
56
|
+
// immediately instead of waiting out the poll interval. The listener
|
|
57
|
+
// works on detached+unref'd children as long as this process lives.
|
|
58
|
+
let exited = false;
|
|
59
|
+
const exitCallbacks = [];
|
|
60
|
+
child.on("exit", () => {
|
|
61
|
+
exited = true;
|
|
62
|
+
for (const cb of exitCallbacks.splice(0))
|
|
63
|
+
cb();
|
|
64
|
+
});
|
|
65
|
+
child.unref();
|
|
66
|
+
return {
|
|
67
|
+
pid: child.pid ?? 0,
|
|
68
|
+
configPath,
|
|
69
|
+
onExit: (cb) => {
|
|
70
|
+
if (exited)
|
|
71
|
+
cb();
|
|
72
|
+
else
|
|
73
|
+
exitCallbacks.push(cb);
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
isAlive(pid) {
|
|
78
|
+
if (pid <= 0)
|
|
79
|
+
return false;
|
|
80
|
+
try {
|
|
81
|
+
process.kill(pid, 0);
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
kill(pid) {
|
|
89
|
+
if (pid <= 0)
|
|
90
|
+
return;
|
|
91
|
+
try {
|
|
92
|
+
process.kill(pid, "SIGTERM");
|
|
93
|
+
setTimeout(() => {
|
|
94
|
+
try {
|
|
95
|
+
process.kill(pid, "SIGKILL");
|
|
96
|
+
}
|
|
97
|
+
catch { /* already dead */ }
|
|
98
|
+
}, 3000);
|
|
99
|
+
}
|
|
100
|
+
catch { /* process already dead */ }
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=node-spawner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-spawner.js","sourceRoot":"","sources":["../../src/adapters/node-spawner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,MAAM,OAAO,WAAW;IACd,QAAQ,CAAS;IACjB,GAAG,CAAS;IAEpB,YAAY,IAAuC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC9B,0CAA0C;QAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC;QAC5D,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5E,gFAAgF;QAChF,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE/C,IAAI,SAAmB,CAAC;QACxB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAC;YACpE,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC5B,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;gBAChE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACtD,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QAEH,6DAA6D;QAC7D,qEAAqE;QACrE,oEAAoE;QACpE,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,aAAa,GAAsB,EAAE,CAAC;QAC5C,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACpB,MAAM,GAAG,IAAI,CAAC;YACd,KAAK,MAAM,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAE,EAAE,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;YACnB,UAAU;YACV,MAAM,EAAE,CAAC,EAAc,EAAE,EAAE;gBACzB,IAAI,MAAM;oBAAE,EAAE,EAAE,CAAC;;oBACZ,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;SACF,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO;QACrB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7B,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YACpE,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;QAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Task, TaskExpectation, TaskMetric, AssessmentResult, CheckResult, MetricResult, ReviewContext, ReasoningLevel } from "@polpo-ai/core/types";
|
|
2
|
+
export type { CheckProgressEvent } from "@polpo-ai/core/assessor";
|
|
3
|
+
export declare function runCheck(expectation: TaskExpectation, cwd: string, onProgress?: (msg: string) => void, context?: ReviewContext, reasoning?: ReasoningLevel): Promise<CheckResult>;
|
|
4
|
+
export declare function runMetric(metric: TaskMetric, cwd: string): Promise<MetricResult>;
|
|
5
|
+
export declare function assessTask(task: Task, cwd: string, onProgress?: (msg: string) => void, context?: ReviewContext, reasoning?: ReasoningLevel, onCheckProgress?: (event: import("@polpo-ai/core/assessor").CheckProgressEvent) => void): Promise<AssessmentResult>;
|
|
6
|
+
//# sourceMappingURL=assessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assessor.d.ts","sourceRoot":"","sources":["../../src/assessment/assessor.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,IAAI,EACJ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACf,MAAM,sBAAsB,CAAC;AAI9B,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA4BlE,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,eAAe,EAC5B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAClC,OAAO,CAAC,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,WAAW,CAAC,CAEtB;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAClC,OAAO,CAAC,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,cAAc,EAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,yBAAyB,EAAE,kBAAkB,KAAK,IAAI,GACtF,OAAO,CAAC,gBAAgB,CAAC,CAE3B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { getPolpoDir } from "../core/constants.js";
|
|
2
|
+
import { NodeFileSystem } from "../adapters/node-filesystem.js";
|
|
3
|
+
import { NodeShell } from "../adapters/node-shell.js";
|
|
4
|
+
import { assessTask as coreAssessTask, runCheck as coreRunCheck, runMetric as coreRunMetric, } from "@polpo-ai/core/assessor";
|
|
5
|
+
import { runLLMReview } from "./llm-review.js";
|
|
6
|
+
// ── Lazy-initialized shared adapters ────────────────────────────────────
|
|
7
|
+
let _fs;
|
|
8
|
+
let _shell;
|
|
9
|
+
function getFS() {
|
|
10
|
+
if (!_fs)
|
|
11
|
+
_fs = new NodeFileSystem();
|
|
12
|
+
return _fs;
|
|
13
|
+
}
|
|
14
|
+
function getShell() {
|
|
15
|
+
if (!_shell)
|
|
16
|
+
_shell = new NodeShell();
|
|
17
|
+
return _shell;
|
|
18
|
+
}
|
|
19
|
+
function makeDeps(cwd) {
|
|
20
|
+
return {
|
|
21
|
+
fs: getFS(),
|
|
22
|
+
shell: getShell(),
|
|
23
|
+
polpoDir: getPolpoDir(cwd),
|
|
24
|
+
runLLMReview,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// ── Backward-compatible signatures (same as before) ─────────────────────
|
|
28
|
+
export async function runCheck(expectation, cwd, onProgress, context, reasoning) {
|
|
29
|
+
return coreRunCheck(makeDeps(cwd), expectation, cwd, onProgress, context, reasoning);
|
|
30
|
+
}
|
|
31
|
+
export async function runMetric(metric, cwd) {
|
|
32
|
+
return coreRunMetric(makeDeps(cwd), metric, cwd);
|
|
33
|
+
}
|
|
34
|
+
export async function assessTask(task, cwd, onProgress, context, reasoning, onCheckProgress) {
|
|
35
|
+
return coreAssessTask(makeDeps(cwd), task, cwd, onProgress, context, reasoning, onCheckProgress);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=assessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assessor.js","sourceRoot":"","sources":["../../src/assessment/assessor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EACL,UAAU,IAAI,cAAc,EAC5B,QAAQ,IAAI,YAAY,EACxB,SAAS,IAAI,aAAa,GAE3B,MAAM,yBAAyB,CAAC;AAWjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,2EAA2E;AAE3E,IAAI,GAA+B,CAAC;AACpC,IAAI,MAA6B,CAAC;AAElC,SAAS,KAAK;IACZ,IAAI,CAAC,GAAG;QAAE,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;IACrC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ;IACf,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO;QACL,EAAE,EAAE,KAAK,EAAE;QACX,KAAK,EAAE,QAAQ,EAAE;QACjB,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;QAC1B,YAAY;KACb,CAAC;AACJ,CAAC;AAED,2EAA2E;AAE3E,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,WAA4B,EAC5B,GAAW,EACX,UAAkC,EAClC,OAAuB,EACvB,SAA0B;IAE1B,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAkB,EAClB,GAAW;IAEX,OAAO,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAU,EACV,GAAW,EACX,UAAkC,EAClC,OAAuB,EACvB,SAA0B,EAC1B,eAAuF;IAEvF,OAAO,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AACnG,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { assessTask, runCheck, runMetric } from "./assessor.js";
|
|
2
|
+
export { runLLMReview, type LLMQueryFn } from "./llm-review.js";
|
|
3
|
+
export { DEFAULT_DIMENSIONS, buildRubricSection, computeWeightedScore, computeMedianScores } from "./scoring.js";
|
|
4
|
+
export { validateReviewPayload, ReviewPayloadSchema, ReviewScoreSchema, REVIEW_JSON_SCHEMA, type ValidatedReviewPayload } from "./schemas.js";
|
|
5
|
+
export { findLogForTask, buildExecutionSummary, type ExecutionSummaryResult } from "./transcript-parser.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assessment/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACjH,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC9I,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { assessTask, runCheck, runMetric } from "./assessor.js";
|
|
2
|
+
export { runLLMReview } from "./llm-review.js";
|
|
3
|
+
export { DEFAULT_DIMENSIONS, buildRubricSection, computeWeightedScore, computeMedianScores } from "./scoring.js";
|
|
4
|
+
export { validateReviewPayload, ReviewPayloadSchema, ReviewScoreSchema, REVIEW_JSON_SCHEMA } from "./schemas.js";
|
|
5
|
+
export { findLogForTask, buildExecutionSummary } from "./transcript-parser.js";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assessment/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,YAAY,EAAmB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACjH,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAA+B,MAAM,cAAc,CAAC;AAC9I,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAA+B,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G-Eval LLM-as-Judge review using Vercel AI SDK.
|
|
3
|
+
*
|
|
4
|
+
* Architecture: 2-phase review for reliability.
|
|
5
|
+
*
|
|
6
|
+
* Phase 1 — EXPLORATION (tool loop via generateText + maxSteps)
|
|
7
|
+
* The reviewer explores the codebase using read_file, glob, grep.
|
|
8
|
+
* AI SDK handles the tool loop internally via `stopWhen: stepCountIs(20)`.
|
|
9
|
+
* After exploration, we collect all assistant text as the "analysis".
|
|
10
|
+
*
|
|
11
|
+
* Phase 2 — SCORING (structured output via Output.object)
|
|
12
|
+
* A separate generateText call receives the full analysis from Phase 1
|
|
13
|
+
* and produces structured scores via Output.object() — the provider
|
|
14
|
+
* enforces JSON schema compliance, zero manual parsing needed.
|
|
15
|
+
*
|
|
16
|
+
* This separation makes the system robust: exploration failures don't
|
|
17
|
+
* block scoring, and scoring failures are isolated from exploration.
|
|
18
|
+
*
|
|
19
|
+
* Runs 3 independent reviewers in parallel (multi-evaluator consensus).
|
|
20
|
+
*/
|
|
21
|
+
import type { TaskExpectation, CheckResult, ReviewContext } from "@polpo-ai/core/types";
|
|
22
|
+
import type { ReasoningLevel } from "@polpo-ai/core/types";
|
|
23
|
+
export type LLMQueryFn = (prompt: string, cwd: string) => Promise<string>;
|
|
24
|
+
/**
|
|
25
|
+
* Run a G-Eval LLM-as-Judge review (2-phase architecture).
|
|
26
|
+
*
|
|
27
|
+
* Phase 1: Each reviewer explores the codebase with tools (read_file, glob, grep).
|
|
28
|
+
* Phase 2: Structured scoring via Output.object() extracts validated scores.
|
|
29
|
+
*
|
|
30
|
+
* Runs 3 independent reviewers in parallel (multi-evaluator consensus).
|
|
31
|
+
* Falls back to single-reviewer if <2 succeed.
|
|
32
|
+
*/
|
|
33
|
+
export declare function runLLMReview(expectation: TaskExpectation, cwd: string, onProgress?: (msg: string) => void, context?: ReviewContext, reasoning?: ReasoningLevel): Promise<CheckResult>;
|
|
34
|
+
//# sourceMappingURL=llm-review.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-review.d.ts","sourceRoot":"","sources":["../../src/assessment/llm-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAYH,OAAO,KAAK,EAAE,eAAe,EAAiC,WAAW,EAAE,aAAa,EAAmB,MAAM,sBAAsB,CAAC;AAOxI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAkrB1E;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,eAAe,EAC5B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAClC,OAAO,CAAC,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,WAAW,CAAC,CAuEtB"}
|