@interf/compiler 0.1.12 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +254 -136
- package/dist/commands/benchmark.d.ts.map +1 -1
- package/dist/commands/benchmark.js +65 -84
- package/dist/commands/benchmark.js.map +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +19 -3
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/create.d.ts +3 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +34 -9
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/default.d.ts.map +1 -1
- package/dist/commands/default.js +2 -0
- package/dist/commands/default.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/index.d.ts +11 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -16
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-args.d.ts +4 -0
- package/dist/lib/agent-args.d.ts.map +1 -0
- package/dist/lib/agent-args.js +42 -0
- package/dist/lib/agent-args.js.map +1 -0
- package/dist/lib/agent-constants.d.ts +6 -0
- package/dist/lib/agent-constants.d.ts.map +1 -0
- package/dist/lib/agent-constants.js +29 -0
- package/dist/lib/agent-constants.js.map +1 -0
- package/dist/lib/agent-detection.d.ts +8 -0
- package/dist/lib/agent-detection.d.ts.map +1 -0
- package/dist/lib/agent-detection.js +66 -0
- package/dist/lib/agent-detection.js.map +1 -0
- package/dist/lib/agent-execution.d.ts +3 -0
- package/dist/lib/agent-execution.d.ts.map +1 -0
- package/dist/lib/agent-execution.js +207 -0
- package/dist/lib/agent-execution.js.map +1 -0
- package/dist/lib/agent-logs.d.ts +3 -0
- package/dist/lib/agent-logs.d.ts.map +1 -0
- package/dist/lib/agent-logs.js +18 -0
- package/dist/lib/agent-logs.js.map +1 -0
- package/dist/lib/agent-preflight.d.ts +8 -0
- package/dist/lib/agent-preflight.d.ts.map +1 -0
- package/dist/lib/agent-preflight.js +77 -0
- package/dist/lib/agent-preflight.js.map +1 -0
- package/dist/lib/agent-render.d.ts +9 -0
- package/dist/lib/agent-render.d.ts.map +1 -0
- package/dist/lib/agent-render.js +219 -0
- package/dist/lib/agent-render.js.map +1 -0
- package/dist/lib/agent-status.d.ts +4 -0
- package/dist/lib/agent-status.d.ts.map +1 -0
- package/dist/lib/agent-status.js +59 -0
- package/dist/lib/agent-status.js.map +1 -0
- package/dist/lib/agent-types.d.ts +31 -0
- package/dist/lib/agent-types.d.ts.map +1 -0
- package/dist/lib/agent-types.js +2 -0
- package/dist/lib/agent-types.js.map +1 -0
- package/dist/lib/agents.d.ts +7 -49
- package/dist/lib/agents.d.ts.map +1 -1
- package/dist/lib/agents.js +8 -554
- package/dist/lib/agents.js.map +1 -1
- package/dist/lib/benchmark-execution.d.ts +9 -0
- package/dist/lib/benchmark-execution.d.ts.map +1 -0
- package/dist/lib/benchmark-execution.js +488 -0
- package/dist/lib/benchmark-execution.js.map +1 -0
- package/dist/lib/benchmark-paths.d.ts +11 -0
- package/dist/lib/benchmark-paths.d.ts.map +1 -0
- package/dist/lib/benchmark-paths.js +38 -0
- package/dist/lib/benchmark-paths.js.map +1 -0
- package/dist/lib/benchmark-specs.d.ts +8 -0
- package/dist/lib/benchmark-specs.d.ts.map +1 -0
- package/dist/lib/benchmark-specs.js +115 -0
- package/dist/lib/benchmark-specs.js.map +1 -0
- package/dist/lib/benchmark-targets.d.ts +5 -0
- package/dist/lib/benchmark-targets.d.ts.map +1 -0
- package/dist/lib/benchmark-targets.js +72 -0
- package/dist/lib/benchmark-targets.js.map +1 -0
- package/dist/lib/benchmark-types.d.ts +19 -0
- package/dist/lib/benchmark-types.d.ts.map +1 -0
- package/dist/lib/benchmark-types.js +2 -0
- package/dist/lib/benchmark-types.js.map +1 -0
- package/dist/lib/benchmark.d.ts +4 -29
- package/dist/lib/benchmark.d.ts.map +1 -1
- package/dist/lib/benchmark.js +3 -324
- package/dist/lib/benchmark.js.map +1 -1
- package/dist/lib/bundled-templates.d.ts +5 -0
- package/dist/lib/bundled-templates.d.ts.map +1 -0
- package/dist/lib/bundled-templates.js +23 -0
- package/dist/lib/bundled-templates.js.map +1 -0
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +2 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/eval-packs.d.ts +204 -0
- package/dist/lib/eval-packs.d.ts.map +1 -0
- package/dist/lib/eval-packs.js +177 -0
- package/dist/lib/eval-packs.js.map +1 -0
- package/dist/lib/execution-profile.d.ts +18 -0
- package/dist/lib/execution-profile.d.ts.map +1 -0
- package/dist/lib/execution-profile.js +85 -0
- package/dist/lib/execution-profile.js.map +1 -0
- package/dist/lib/interf-bootstrap.d.ts +4 -0
- package/dist/lib/interf-bootstrap.d.ts.map +1 -1
- package/dist/lib/interf-bootstrap.js +71 -68
- package/dist/lib/interf-bootstrap.js.map +1 -1
- package/dist/lib/interf-compile-plan.d.ts +12 -0
- package/dist/lib/interf-compile-plan.d.ts.map +1 -0
- package/dist/lib/interf-compile-plan.js +143 -0
- package/dist/lib/interf-compile-plan.js.map +1 -0
- package/dist/lib/interf-detect.d.ts.map +1 -1
- package/dist/lib/interf-detect.js +11 -10
- package/dist/lib/interf-detect.js.map +1 -1
- package/dist/lib/interf-scaffold.d.ts +1 -10
- package/dist/lib/interf-scaffold.d.ts.map +1 -1
- package/dist/lib/interf-scaffold.js +25 -362
- package/dist/lib/interf-scaffold.js.map +1 -1
- package/dist/lib/interf-workflow-package.d.ts +4 -0
- package/dist/lib/interf-workflow-package.d.ts.map +1 -0
- package/dist/lib/interf-workflow-package.js +131 -0
- package/dist/lib/interf-workflow-package.js.map +1 -0
- package/dist/lib/interf.d.ts +2 -1
- package/dist/lib/interf.d.ts.map +1 -1
- package/dist/lib/interf.js +2 -1
- package/dist/lib/interf.js.map +1 -1
- package/dist/lib/local-workflows.d.ts.map +1 -1
- package/dist/lib/local-workflows.js +8 -12
- package/dist/lib/local-workflows.js.map +1 -1
- package/dist/lib/logger.d.ts +4 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +11 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/obsidian.d.ts.map +1 -1
- package/dist/lib/obsidian.js +7 -3
- package/dist/lib/obsidian.js.map +1 -1
- package/dist/lib/parse.d.ts +2 -2
- package/dist/lib/parse.d.ts.map +1 -1
- package/dist/lib/parse.js +11 -7
- package/dist/lib/parse.js.map +1 -1
- package/dist/lib/registry.js +3 -3
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/runtime-acceptance.d.ts +4 -0
- package/dist/lib/runtime-acceptance.d.ts.map +1 -0
- package/dist/lib/runtime-acceptance.js +123 -0
- package/dist/lib/runtime-acceptance.js.map +1 -0
- package/dist/lib/runtime-contracts.d.ts +4 -0
- package/dist/lib/runtime-contracts.d.ts.map +1 -0
- package/dist/lib/runtime-contracts.js +63 -0
- package/dist/lib/runtime-contracts.js.map +1 -0
- package/dist/lib/runtime-paths.d.ts +8 -0
- package/dist/lib/runtime-paths.d.ts.map +1 -0
- package/dist/lib/runtime-paths.js +28 -0
- package/dist/lib/runtime-paths.js.map +1 -0
- package/dist/lib/runtime-prompt.d.ts +3 -0
- package/dist/lib/runtime-prompt.d.ts.map +1 -0
- package/dist/lib/runtime-prompt.js +59 -0
- package/dist/lib/runtime-prompt.js.map +1 -0
- package/dist/lib/runtime-reconcile.d.ts +6 -0
- package/dist/lib/runtime-reconcile.d.ts.map +1 -0
- package/dist/lib/runtime-reconcile.js +339 -0
- package/dist/lib/runtime-reconcile.js.map +1 -0
- package/dist/lib/runtime-runs.d.ts +12 -0
- package/dist/lib/runtime-runs.d.ts.map +1 -0
- package/dist/lib/runtime-runs.js +337 -0
- package/dist/lib/runtime-runs.js.map +1 -0
- package/dist/lib/runtime-types.d.ts +42 -0
- package/dist/lib/runtime-types.d.ts.map +1 -0
- package/dist/lib/runtime-types.js +2 -0
- package/dist/lib/runtime-types.js.map +1 -0
- package/dist/lib/runtime.d.ts +6 -58
- package/dist/lib/runtime.d.ts.map +1 -1
- package/dist/lib/runtime.js +5 -614
- package/dist/lib/runtime.js.map +1 -1
- package/dist/lib/schema.d.ts +156 -13
- package/dist/lib/schema.d.ts.map +1 -1
- package/dist/lib/schema.js +113 -4
- package/dist/lib/schema.js.map +1 -1
- package/dist/lib/source-config.d.ts +13 -0
- package/dist/lib/source-config.d.ts.map +1 -0
- package/dist/lib/source-config.js +75 -0
- package/dist/lib/source-config.js.map +1 -0
- package/dist/lib/state-artifacts.d.ts +15 -0
- package/dist/lib/state-artifacts.d.ts.map +1 -0
- package/dist/lib/state-artifacts.js +24 -0
- package/dist/lib/state-artifacts.js.map +1 -0
- package/dist/lib/state-health.d.ts +9 -0
- package/dist/lib/state-health.d.ts.map +1 -0
- package/dist/lib/state-health.js +330 -0
- package/dist/lib/state-health.js.map +1 -0
- package/dist/lib/state-io.d.ts +15 -0
- package/dist/lib/state-io.d.ts.map +1 -0
- package/dist/lib/state-io.js +219 -0
- package/dist/lib/state-io.js.map +1 -0
- package/dist/lib/state-paths.d.ts +5 -0
- package/dist/lib/state-paths.d.ts.map +1 -0
- package/dist/lib/state-paths.js +19 -0
- package/dist/lib/state-paths.js.map +1 -0
- package/dist/lib/state-view.d.ts +7 -0
- package/dist/lib/state-view.d.ts.map +1 -0
- package/dist/lib/state-view.js +147 -0
- package/dist/lib/state-view.js.map +1 -0
- package/dist/lib/state.d.ts +6 -46
- package/dist/lib/state.d.ts.map +1 -1
- package/dist/lib/state.js +5 -632
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/summarize-plan.d.ts +1 -0
- package/dist/lib/summarize-plan.d.ts.map +1 -1
- package/dist/lib/summarize-plan.js +10 -0
- package/dist/lib/summarize-plan.js.map +1 -1
- package/dist/lib/user-config.js +2 -2
- package/dist/lib/user-config.js.map +1 -1
- package/dist/lib/validate-helpers.d.ts +21 -0
- package/dist/lib/validate-helpers.d.ts.map +1 -0
- package/dist/lib/validate-helpers.js +72 -0
- package/dist/lib/validate-helpers.js.map +1 -0
- package/dist/lib/validate-interface.d.ts +2 -0
- package/dist/lib/validate-interface.d.ts.map +1 -1
- package/dist/lib/validate-interface.js +103 -53
- package/dist/lib/validate-interface.js.map +1 -1
- package/dist/lib/validate-kb.d.ts +8 -0
- package/dist/lib/validate-kb.d.ts.map +1 -1
- package/dist/lib/validate-kb.js +53 -24
- package/dist/lib/validate-kb.js.map +1 -1
- package/dist/lib/validate.d.ts +1 -1
- package/dist/lib/validate.d.ts.map +1 -1
- package/dist/lib/validate.js +5 -2
- package/dist/lib/validate.js.map +1 -1
- package/dist/lib/workflow-definitions.d.ts +1 -1
- package/dist/lib/workflow-definitions.d.ts.map +1 -1
- package/dist/lib/workflow-definitions.js +90 -166
- package/dist/lib/workflow-definitions.js.map +1 -1
- package/dist/lib/workflow-helpers.d.ts.map +1 -1
- package/dist/lib/workflow-helpers.js +6 -3
- package/dist/lib/workflow-helpers.js.map +1 -1
- package/dist/lib/workflow-stage-runner.d.ts +41 -0
- package/dist/lib/workflow-stage-runner.d.ts.map +1 -0
- package/dist/lib/workflow-stage-runner.js +106 -0
- package/dist/lib/workflow-stage-runner.js.map +1 -0
- package/dist/lib/workflow-starter-docs.d.ts +9 -0
- package/dist/lib/workflow-starter-docs.d.ts.map +1 -0
- package/dist/lib/workflow-starter-docs.js +18 -0
- package/dist/lib/workflow-starter-docs.js.map +1 -0
- package/dist/lib/workflows-interface-contracts.d.ts +24 -0
- package/dist/lib/workflows-interface-contracts.d.ts.map +1 -0
- package/dist/lib/workflows-interface-contracts.js +304 -0
- package/dist/lib/workflows-interface-contracts.js.map +1 -0
- package/dist/lib/workflows-interface.d.ts +3 -10
- package/dist/lib/workflows-interface.d.ts.map +1 -1
- package/dist/lib/workflows-interface.js +117 -365
- package/dist/lib/workflows-interface.js.map +1 -1
- package/dist/lib/workflows-kb.d.ts.map +1 -1
- package/dist/lib/workflows-kb.js +79 -55
- package/dist/lib/workflows-kb.js.map +1 -1
- package/dist/lib/workflows.d.ts.map +1 -1
- package/dist/lib/workflows.js +1 -1
- package/dist/lib/workflows.js.map +1 -1
- package/package.json +15 -4
- package/skills/interface/analyze/SKILL.md +79 -28
- package/skills/interface/compile/SKILL.md +27 -28
- package/skills/interface/create/SKILL.md +53 -230
- package/skills/interface/create/references/compile-plan-format.md +31 -31
- package/skills/interface/create/references/workflows.md +17 -32
- package/skills/interface/query/SKILL.md +15 -1
- package/skills/interface/retrieve/SKILL.md +32 -65
- package/skills/knowledge-base/compile/SKILL.md +59 -83
- package/skills/knowledge-base/compile/references/stage-claims.md +1 -1
- package/skills/knowledge-base/compile/references/stage-entities.md +2 -2
- package/skills/knowledge-base/query/SKILL.md +13 -1
- package/skills/knowledge-base/summarize/SKILL.md +54 -24
- package/templates/interface/README.md +13 -12
- package/templates/interface/interfaces.md +14 -11
- package/templates/knowledge-base/README.md +0 -1
- package/templates/knowledge-base/registry.md +15 -15
- package/templates/workflow-package/README.md +16 -0
- package/templates/workflow-package/create/SKILL.md +8 -0
- package/templates/workflow-package/interface-query/SKILL.md +29 -0
- package/templates/workflow-package/interface-stage/SKILL.md +13 -0
- package/templates/workflow-package/knowledge-base-query/SKILL.md +36 -0
- package/templates/workflow-package/knowledge-base-stage/SKILL.md +13 -0
- package/templates/workflow-starters/interface/interf/README.md +13 -0
- package/templates/workflow-starters/interface/interf/create/SKILL.md +15 -0
- package/templates/workflow-starters/knowledge-base/interf/README.md +13 -0
- package/templates/workflow-starters/knowledge-base/karpathy/README.md +13 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { execFileSync } from "node:child_process";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { loadUserConfig } from "./user-config.js";
|
|
6
|
+
import { AGENTS } from "./agent-constants.js";
|
|
7
|
+
export function detectAgents() {
|
|
8
|
+
return AGENTS.filter((agent) => {
|
|
9
|
+
const dir = join(homedir(), `.${agent.name === "claude-code" ? "claude" : agent.name}`);
|
|
10
|
+
return existsSync(dir);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function commandExists(command) {
|
|
14
|
+
try {
|
|
15
|
+
execFileSync("which", [command], { stdio: "ignore" });
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function supportsAutomatedRuns(agent) {
|
|
23
|
+
return agent.name === "claude-code" || agent.name === "codex";
|
|
24
|
+
}
|
|
25
|
+
export function resolveAgent() {
|
|
26
|
+
const config = loadUserConfig();
|
|
27
|
+
if (config) {
|
|
28
|
+
const configured = AGENTS.find((agent) => agent.command === config.agentCommand) ??
|
|
29
|
+
AGENTS.find((agent) => agent.name === config.agent) ??
|
|
30
|
+
AGENTS.find((agent) => agent.displayName === config.agent);
|
|
31
|
+
if (!configured) {
|
|
32
|
+
return {
|
|
33
|
+
agent: null,
|
|
34
|
+
error: `Configured agent "${config.agent}" is not supported by this Interf build. Run \`interf init\` to choose a supported agent.`,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (!commandExists(configured.command)) {
|
|
38
|
+
return {
|
|
39
|
+
agent: null,
|
|
40
|
+
error: `Configured agent "${configured.displayName}" is not available in PATH. Run \`interf init\` to reconfigure.`,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (!supportsAutomatedRuns(configured)) {
|
|
44
|
+
return {
|
|
45
|
+
agent: null,
|
|
46
|
+
error: `Configured agent "${configured.displayName}" is detected, but this Interf build can only automate Claude Code or Codex. Run \`interf init\` and choose one of those agents.`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return { agent: configured };
|
|
50
|
+
}
|
|
51
|
+
const detected = detectAgents().filter((agent) => commandExists(agent.command) && supportsAutomatedRuns(agent));
|
|
52
|
+
if (detected.length === 0) {
|
|
53
|
+
return {
|
|
54
|
+
agent: null,
|
|
55
|
+
error: "No coding agent detected. Install Claude Code or Codex.",
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (detected.length > 1) {
|
|
59
|
+
return {
|
|
60
|
+
agent: null,
|
|
61
|
+
error: "Multiple coding agents detected but no default is configured. Run `interf init` to choose which agent compile commands should use.",
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return { agent: detected[0] };
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=agent-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-detection.js","sourceRoot":"","sources":["../../src/lib/agent-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-execution.d.ts","sourceRoot":"","sources":["../../src/lib/agent-execution.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAsMjB"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { ensureRequiredSkill, extractRequiredSkill, } from "./agent-skills.js";
|
|
4
|
+
import { CODEX_NOISE_PATTERNS } from "./agent-constants.js";
|
|
5
|
+
import { buildAgentArgs } from "./agent-args.js";
|
|
6
|
+
import { appendAgentEventLog, appendAgentStatusLog } from "./agent-logs.js";
|
|
7
|
+
import { displayAgentEvent, emitVisibleAgentText, summarizeAgentToolActivity, } from "./agent-render.js";
|
|
8
|
+
import { classifyTerminalVisibleStatus, extractAgentFailureStatus, hasAgentStalled, } from "./agent-status.js";
|
|
9
|
+
export function spawnAgent(agent, dirPath, prompt, options = {}) {
|
|
10
|
+
const requiredSkill = extractRequiredSkill(prompt);
|
|
11
|
+
const skillError = ensureRequiredSkill(agent, requiredSkill);
|
|
12
|
+
if (skillError) {
|
|
13
|
+
console.log(chalk.red(` ${skillError}`));
|
|
14
|
+
return Promise.resolve(1);
|
|
15
|
+
}
|
|
16
|
+
return new Promise((resolve) => {
|
|
17
|
+
const args = buildAgentArgs(agent, prompt, options.executionProfile);
|
|
18
|
+
appendAgentEventLog(options.eventLogPath, {
|
|
19
|
+
type: "spawn",
|
|
20
|
+
command: agent.command,
|
|
21
|
+
args,
|
|
22
|
+
cwd: dirPath,
|
|
23
|
+
});
|
|
24
|
+
const launchLine = `Launching ${agent.displayName}...`;
|
|
25
|
+
console.log(chalk.dim(` ${launchLine}`));
|
|
26
|
+
appendAgentStatusLog(options.statusLogPath, launchLine);
|
|
27
|
+
const proc = spawn(agent.command, args, {
|
|
28
|
+
cwd: dirPath,
|
|
29
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
30
|
+
});
|
|
31
|
+
const timeoutMs = options.executionProfile?.timeoutMs ?? null;
|
|
32
|
+
let buffer = "";
|
|
33
|
+
let stderrBuffer = "";
|
|
34
|
+
let lastVisibleOutputAt = Date.now();
|
|
35
|
+
let lastActivityAt = Date.now();
|
|
36
|
+
let lastHeartbeatAt = 0;
|
|
37
|
+
let sawRawOutput = false;
|
|
38
|
+
let sawVisibleEvent = false;
|
|
39
|
+
let timedOut = false;
|
|
40
|
+
let completionSatisfied = false;
|
|
41
|
+
let failureStatus = null;
|
|
42
|
+
let terminalSignalSent = false;
|
|
43
|
+
let lastToolActivity = null;
|
|
44
|
+
const lastVisibleText = { current: null };
|
|
45
|
+
const heartbeat = setInterval(() => {
|
|
46
|
+
const now = Date.now();
|
|
47
|
+
const minQuietMs = sawVisibleEvent ? 15000 : 8000;
|
|
48
|
+
const minHeartbeatGapMs = sawVisibleEvent ? 30000 : 12000;
|
|
49
|
+
if (now - lastVisibleOutputAt < minQuietMs)
|
|
50
|
+
return;
|
|
51
|
+
if (now - lastHeartbeatAt < minHeartbeatGapMs)
|
|
52
|
+
return;
|
|
53
|
+
lastHeartbeatAt = now;
|
|
54
|
+
const seconds = Math.floor((now - lastVisibleOutputAt) / 1000);
|
|
55
|
+
const activitySuffix = lastToolActivity ? ` while ${lastToolActivity}` : "";
|
|
56
|
+
const label = sawVisibleEvent
|
|
57
|
+
? `${agent.displayName} is still running${activitySuffix}... (${seconds}s since last output)`
|
|
58
|
+
: sawRawOutput
|
|
59
|
+
? `${agent.displayName} is active${activitySuffix}, but has not emitted visible progress yet... (${seconds}s)`
|
|
60
|
+
: `${agent.displayName} started, but has not emitted visible progress yet... (${seconds}s)`;
|
|
61
|
+
console.log(chalk.dim(` ${label}`));
|
|
62
|
+
appendAgentStatusLog(options.statusLogPath, label);
|
|
63
|
+
}, 5000);
|
|
64
|
+
const forwardSignal = () => {
|
|
65
|
+
proc.kill("SIGINT");
|
|
66
|
+
};
|
|
67
|
+
const maybeInterruptAfterTerminalStatus = () => {
|
|
68
|
+
if (options.completionCheck)
|
|
69
|
+
return;
|
|
70
|
+
if (terminalSignalSent || !lastVisibleText.terminalStatus)
|
|
71
|
+
return;
|
|
72
|
+
terminalSignalSent = true;
|
|
73
|
+
appendAgentEventLog(options.eventLogPath, {
|
|
74
|
+
type: "terminal-status",
|
|
75
|
+
status: lastVisibleText.terminalStatus,
|
|
76
|
+
});
|
|
77
|
+
const terminalKind = classifyTerminalVisibleStatus(lastVisibleText.terminalStatus);
|
|
78
|
+
if (terminalKind === "done") {
|
|
79
|
+
completionSatisfied = true;
|
|
80
|
+
}
|
|
81
|
+
else if (terminalKind === "failure") {
|
|
82
|
+
failureStatus ||= lastVisibleText.terminalStatus;
|
|
83
|
+
}
|
|
84
|
+
proc.kill("SIGINT");
|
|
85
|
+
};
|
|
86
|
+
const timeout = typeof timeoutMs === "number" && timeoutMs > 0
|
|
87
|
+
? setInterval(() => {
|
|
88
|
+
const now = Date.now();
|
|
89
|
+
const idleMs = now - lastActivityAt;
|
|
90
|
+
if (!hasAgentStalled(lastActivityAt, now, timeoutMs))
|
|
91
|
+
return;
|
|
92
|
+
timedOut = true;
|
|
93
|
+
appendAgentEventLog(options.eventLogPath, {
|
|
94
|
+
type: "stall-timeout",
|
|
95
|
+
timeout_ms: timeoutMs,
|
|
96
|
+
idle_ms: idleMs,
|
|
97
|
+
});
|
|
98
|
+
console.log(chalk.red(` ${agent.displayName} stalled for ${Math.round(idleMs / 1000)}s without agent output.`));
|
|
99
|
+
proc.kill("SIGINT");
|
|
100
|
+
}, 2000)
|
|
101
|
+
: null;
|
|
102
|
+
const completionPoll = options.completionCheck
|
|
103
|
+
? setInterval(() => {
|
|
104
|
+
if (timedOut || completionSatisfied)
|
|
105
|
+
return;
|
|
106
|
+
try {
|
|
107
|
+
if (!options.completionCheck?.())
|
|
108
|
+
return;
|
|
109
|
+
completionSatisfied = true;
|
|
110
|
+
appendAgentEventLog(options.eventLogPath, {
|
|
111
|
+
type: "completion-check-satisfied",
|
|
112
|
+
});
|
|
113
|
+
proc.kill("SIGINT");
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// Ignore completion check failures and let the agent continue.
|
|
117
|
+
}
|
|
118
|
+
}, 1000)
|
|
119
|
+
: null;
|
|
120
|
+
process.once("SIGINT", forwardSignal);
|
|
121
|
+
proc.stdout?.on("data", (chunk) => {
|
|
122
|
+
sawRawOutput = true;
|
|
123
|
+
lastActivityAt = Date.now();
|
|
124
|
+
buffer += chunk.toString();
|
|
125
|
+
const lines = buffer.split("\n");
|
|
126
|
+
buffer = lines.pop() ?? "";
|
|
127
|
+
for (const line of lines) {
|
|
128
|
+
if (!line.trim())
|
|
129
|
+
continue;
|
|
130
|
+
appendAgentEventLog(options.eventLogPath, {
|
|
131
|
+
type: "stdout",
|
|
132
|
+
line,
|
|
133
|
+
});
|
|
134
|
+
try {
|
|
135
|
+
const event = JSON.parse(line);
|
|
136
|
+
const toolActivity = summarizeAgentToolActivity(event);
|
|
137
|
+
if (toolActivity) {
|
|
138
|
+
lastToolActivity = toolActivity;
|
|
139
|
+
}
|
|
140
|
+
failureStatus ||= extractAgentFailureStatus(event);
|
|
141
|
+
if (displayAgentEvent(event, options.statusLogPath, lastVisibleText)) {
|
|
142
|
+
sawVisibleEvent = true;
|
|
143
|
+
lastVisibleOutputAt = Date.now();
|
|
144
|
+
}
|
|
145
|
+
maybeInterruptAfterTerminalStatus();
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
if (emitVisibleAgentText(line, options.statusLogPath, lastVisibleText)) {
|
|
149
|
+
sawVisibleEvent = true;
|
|
150
|
+
lastVisibleOutputAt = Date.now();
|
|
151
|
+
}
|
|
152
|
+
maybeInterruptAfterTerminalStatus();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
proc.stderr?.on("data", (chunk) => {
|
|
157
|
+
lastActivityAt = Date.now();
|
|
158
|
+
stderrBuffer += chunk.toString();
|
|
159
|
+
const lines = stderrBuffer.split("\n");
|
|
160
|
+
stderrBuffer = lines.pop() ?? "";
|
|
161
|
+
for (const line of lines) {
|
|
162
|
+
if (!line.trim())
|
|
163
|
+
continue;
|
|
164
|
+
appendAgentEventLog(options.eventLogPath, {
|
|
165
|
+
type: "stderr",
|
|
166
|
+
line,
|
|
167
|
+
});
|
|
168
|
+
if (CODEX_NOISE_PATTERNS.some((pattern) => pattern.test(line)))
|
|
169
|
+
continue;
|
|
170
|
+
sawRawOutput = true;
|
|
171
|
+
lastVisibleOutputAt = Date.now();
|
|
172
|
+
process.stderr.write(`${line}\n`);
|
|
173
|
+
sawVisibleEvent = true;
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
proc.on("close", (code) => {
|
|
177
|
+
clearInterval(heartbeat);
|
|
178
|
+
if (timeout)
|
|
179
|
+
clearInterval(timeout);
|
|
180
|
+
if (completionPoll)
|
|
181
|
+
clearInterval(completionPoll);
|
|
182
|
+
process.removeListener("SIGINT", forwardSignal);
|
|
183
|
+
const finalCode = timedOut ? 124 : failureStatus ? 1 : completionSatisfied ? 0 : (code ?? 0);
|
|
184
|
+
appendAgentEventLog(options.eventLogPath, {
|
|
185
|
+
type: "close",
|
|
186
|
+
code: finalCode,
|
|
187
|
+
failure_status: failureStatus,
|
|
188
|
+
});
|
|
189
|
+
resolve(finalCode);
|
|
190
|
+
});
|
|
191
|
+
proc.on("error", () => {
|
|
192
|
+
clearInterval(heartbeat);
|
|
193
|
+
if (timeout)
|
|
194
|
+
clearInterval(timeout);
|
|
195
|
+
if (completionPoll)
|
|
196
|
+
clearInterval(completionPoll);
|
|
197
|
+
process.removeListener("SIGINT", forwardSignal);
|
|
198
|
+
appendAgentEventLog(options.eventLogPath, {
|
|
199
|
+
type: "error",
|
|
200
|
+
message: `Failed to start ${agent.displayName}`,
|
|
201
|
+
});
|
|
202
|
+
console.log(chalk.red(` Failed to start ${agent.displayName}.`));
|
|
203
|
+
resolve(1);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=agent-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-execution.js","sourceRoot":"","sources":["../../src/lib/agent-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function appendAgentEventLog(eventLogPath: string | null | undefined, event: Record<string, unknown>): void;
|
|
2
|
+
export declare function appendAgentStatusLog(statusLogPath: string | null | undefined, text: string): void;
|
|
3
|
+
//# sourceMappingURL=agent-logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-logs.d.ts","sourceRoot":"","sources":["../../src/lib/agent-logs.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CAUN;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,IAAI,EAAE,MAAM,GACX,IAAI,CAON"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { appendFileSync, mkdirSync } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
export function appendAgentEventLog(eventLogPath, event) {
|
|
4
|
+
if (!eventLogPath)
|
|
5
|
+
return;
|
|
6
|
+
mkdirSync(dirname(eventLogPath), { recursive: true });
|
|
7
|
+
appendFileSync(eventLogPath, `${JSON.stringify({
|
|
8
|
+
timestamp: new Date().toISOString(),
|
|
9
|
+
...event,
|
|
10
|
+
})}\n`);
|
|
11
|
+
}
|
|
12
|
+
export function appendAgentStatusLog(statusLogPath, text) {
|
|
13
|
+
if (!statusLogPath)
|
|
14
|
+
return;
|
|
15
|
+
mkdirSync(dirname(statusLogPath), { recursive: true });
|
|
16
|
+
appendFileSync(statusLogPath, `${new Date().toISOString()} ${text}\n`);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=agent-logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-logs.js","sourceRoot":"","sources":["../../src/lib/agent-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,mBAAmB,CACjC,YAAuC,EACvC,KAA8B;IAE9B,IAAI,CAAC,YAAY;QAAE,OAAO;IAC1B,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,cAAc,CACZ,YAAY,EACZ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG,KAAK;KACT,CAAC,IAAI,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,aAAwC,EACxC,IAAY;IAEZ,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,cAAc,CACZ,aAAa,EACb,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CACxC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Agent, AgentAutomationReadiness, AgentPreflightOptions, AgentPreflightResult } from "./agent-types.js";
|
|
2
|
+
export declare function buildAgentPreflightPrompt(): string;
|
|
3
|
+
export declare function runAgentPreflight(agent: Agent, options?: AgentPreflightOptions): AgentPreflightResult;
|
|
4
|
+
export declare function ensureAgentAutomatedRunReady(agent: Agent, options?: {
|
|
5
|
+
force?: boolean;
|
|
6
|
+
runPreflight?: typeof runAgentPreflight;
|
|
7
|
+
}): AgentAutomationReadiness;
|
|
8
|
+
//# sourceMappingURL=agent-preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-preflight.d.ts","sourceRoot":"","sources":["../../src/lib/agent-preflight.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,KAAK,EACL,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAI1B,wBAAgB,yBAAyB,IAAI,MAAM,CAQlD;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,qBAA0B,GAClC,oBAAoB,CAsCtB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACpC,GACL,wBAAwB,CAiB1B"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { mkdtempSync, rmSync } from "node:fs";
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { CODEX_NOISE_PATTERNS } from "./agent-constants.js";
|
|
6
|
+
import { buildAgentArgs } from "./agent-args.js";
|
|
7
|
+
const successfulPreflightAgents = new Set();
|
|
8
|
+
export function buildAgentPreflightPrompt() {
|
|
9
|
+
return [
|
|
10
|
+
"Interf doctor preflight.",
|
|
11
|
+
'Reply with exactly one line: "DONE: Interf doctor ok".',
|
|
12
|
+
"Do not use tools.",
|
|
13
|
+
"Do not read files.",
|
|
14
|
+
"Do not write files.",
|
|
15
|
+
].join(" ");
|
|
16
|
+
}
|
|
17
|
+
export function runAgentPreflight(agent, options = {}) {
|
|
18
|
+
const timeoutMs = options.timeoutMs ?? 30000;
|
|
19
|
+
const spawnSyncImpl = options.spawnSyncImpl ?? spawnSync;
|
|
20
|
+
const dirPath = mkdtempSync(join(tmpdir(), "interf-doctor-"));
|
|
21
|
+
try {
|
|
22
|
+
const result = spawnSyncImpl(agent.command, buildAgentArgs(agent, buildAgentPreflightPrompt()), {
|
|
23
|
+
cwd: dirPath,
|
|
24
|
+
encoding: "utf8",
|
|
25
|
+
timeout: timeoutMs,
|
|
26
|
+
});
|
|
27
|
+
const stdout = typeof result.stdout === "string" ? result.stdout.trim() : "";
|
|
28
|
+
const stderr = sanitizeAgentStderr(typeof result.stderr === "string" ? result.stderr : "");
|
|
29
|
+
const timedOut = result.error?.name === "Error" && result.error.message.includes("timed out");
|
|
30
|
+
if (result.error) {
|
|
31
|
+
return {
|
|
32
|
+
ok: false,
|
|
33
|
+
code: typeof result.status === "number" ? result.status : null,
|
|
34
|
+
timedOut,
|
|
35
|
+
stdout,
|
|
36
|
+
stderr,
|
|
37
|
+
error: result.error.message,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
ok: result.status === 0,
|
|
42
|
+
code: typeof result.status === "number" ? result.status : null,
|
|
43
|
+
timedOut: false,
|
|
44
|
+
stdout,
|
|
45
|
+
stderr,
|
|
46
|
+
error: result.status === 0 ? null : `Exited with code ${result.status ?? "unknown"}`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
rmSync(dirPath, { recursive: true, force: true });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export function ensureAgentAutomatedRunReady(agent, options = {}) {
|
|
54
|
+
if (!options.force && successfulPreflightAgents.has(agent.name)) {
|
|
55
|
+
return { ok: true };
|
|
56
|
+
}
|
|
57
|
+
const runPreflight = options.runPreflight ?? runAgentPreflight;
|
|
58
|
+
const result = runPreflight(agent);
|
|
59
|
+
if (!result.ok) {
|
|
60
|
+
const details = [result.error, result.stderr].filter(Boolean).join(" ");
|
|
61
|
+
return {
|
|
62
|
+
ok: false,
|
|
63
|
+
error: `${agent.displayName} failed Interf executor preflight. Run \`interf doctor --live\` for details.${details ? ` ${details}` : ""}`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
successfulPreflightAgents.add(agent.name);
|
|
67
|
+
return { ok: true };
|
|
68
|
+
}
|
|
69
|
+
function sanitizeAgentStderr(stderr) {
|
|
70
|
+
return stderr
|
|
71
|
+
.split("\n")
|
|
72
|
+
.filter((line) => line.trim().length > 0)
|
|
73
|
+
.filter((line) => !CODEX_NOISE_PATTERNS.some((pattern) => pattern.test(line)))
|
|
74
|
+
.join("\n")
|
|
75
|
+
.trim();
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=agent-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-preflight.js","sourceRoot":"","sources":["../../src/lib/agent-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface VisibleTextState {
|
|
2
|
+
current: string | null;
|
|
3
|
+
terminated?: boolean;
|
|
4
|
+
terminalStatus?: string | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function emitVisibleAgentText(text: string, statusLogPath: string | null | undefined, lastVisibleText?: VisibleTextState): boolean;
|
|
7
|
+
export declare function displayAgentEvent(event: Record<string, unknown>, statusLogPath: string | null | undefined, lastVisibleText: VisibleTextState): boolean;
|
|
8
|
+
export declare function summarizeAgentToolActivity(event: Record<string, unknown>): string | null;
|
|
9
|
+
//# sourceMappingURL=agent-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-render.d.ts","sourceRoot":"","sources":["../../src/lib/agent-render.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,eAAe,CAAC,EAAE,gBAAgB,GACjC,OAAO,CA2BT;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,eAAe,EAAE,gBAAgB,GAChC,OAAO,CAuET;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAsBxF"}
|