terse-cli 0.1.69 → 0.1.71
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/dist/cliUi.d.ts +8 -0
- package/dist/cliUi.d.ts.map +1 -1
- package/dist/cliUi.js +44 -0
- package/dist/cliUi.js.map +1 -1
- package/dist/codegen.d.ts +0 -15
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +81 -466
- package/dist/codegen.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +13 -0
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/resume.d.ts +5 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +29 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +5 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +19 -12
- package/dist/commands/test.js.map +1 -1
- package/dist/deploy.d.ts +1 -2
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +38 -61
- package/dist/deploy.js.map +1 -1
- package/dist/generate.d.ts +1 -2
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +69 -67
- package/dist/generate.js.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -2
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +96 -45
- package/dist/init.js.map +1 -1
- package/dist/integrate.d.ts +0 -1
- package/dist/integrate.d.ts.map +1 -1
- package/dist/integrate.js +11 -191
- package/dist/integrate.js.map +1 -1
- package/dist/jsonOutput.d.ts +19 -0
- package/dist/jsonOutput.d.ts.map +1 -0
- package/dist/jsonOutput.js +25 -0
- package/dist/jsonOutput.js.map +1 -0
- package/dist/nonInteractive.d.ts +2 -4
- package/dist/nonInteractive.d.ts.map +1 -1
- package/dist/nonInteractive.js +2 -5
- package/dist/nonInteractive.js.map +1 -1
- package/dist/providers/LanguageProvider.d.ts +13 -0
- package/dist/providers/LanguageProvider.d.ts.map +1 -1
- package/dist/providers/python/PythonProvider.js +0 -1
- package/dist/providers/python/PythonProvider.js.map +1 -1
- package/dist/providers/typescript/TypeScriptProvider.d.ts +13 -0
- package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
- package/dist/providers/typescript/TypeScriptProvider.js +32 -95
- package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
- package/dist/providers/typescript/durableRuntime.d.ts +19 -0
- package/dist/providers/typescript/durableRuntime.d.ts.map +1 -0
- package/dist/providers/typescript/durableRuntime.js +180 -0
- package/dist/providers/typescript/durableRuntime.js.map +1 -0
- package/dist/providers/typescript/jobMacro.d.ts +12 -0
- package/dist/providers/typescript/jobMacro.d.ts.map +1 -0
- package/dist/providers/typescript/jobMacro.js +128 -0
- package/dist/providers/typescript/jobMacro.js.map +1 -0
- package/dist/providers/typescript/parkSignals.d.ts +7 -0
- package/dist/providers/typescript/parkSignals.d.ts.map +1 -0
- package/dist/providers/typescript/parkSignals.js +45 -0
- package/dist/providers/typescript/parkSignals.js.map +1 -0
- package/dist/providers/typescript/rewindRun.d.ts +9 -0
- package/dist/providers/typescript/rewindRun.d.ts.map +1 -0
- package/dist/providers/typescript/rewindRun.js +111 -0
- package/dist/providers/typescript/rewindRun.js.map +1 -0
- package/dist/providers/typescript/runtimes/JobRuntime.d.ts +23 -0
- package/dist/providers/typescript/runtimes/JobRuntime.d.ts.map +1 -0
- package/dist/providers/typescript/runtimes/JobRuntime.js +19 -0
- package/dist/providers/typescript/runtimes/JobRuntime.js.map +1 -0
- package/dist/providers/typescript/runtimes/directJobRuntime.d.ts +3 -0
- package/dist/providers/typescript/runtimes/directJobRuntime.d.ts.map +1 -0
- package/dist/providers/typescript/runtimes/directJobRuntime.js +50 -0
- package/dist/providers/typescript/runtimes/directJobRuntime.js.map +1 -0
- package/dist/providers/typescript/runtimes/durableJobRuntime.d.ts +3 -0
- package/dist/providers/typescript/runtimes/durableJobRuntime.d.ts.map +1 -0
- package/dist/providers/typescript/runtimes/durableJobRuntime.js +95 -0
- package/dist/providers/typescript/runtimes/durableJobRuntime.js.map +1 -0
- package/dist/providers/typescript/runtimes/index.d.ts +4 -0
- package/dist/providers/typescript/runtimes/index.d.ts.map +1 -0
- package/dist/providers/typescript/runtimes/index.js +3 -0
- package/dist/providers/typescript/runtimes/index.js.map +1 -0
- package/dist/providers/typescript/runtimes/session.d.ts +2 -0
- package/dist/providers/typescript/runtimes/session.d.ts.map +1 -0
- package/dist/providers/typescript/runtimes/session.js +61 -0
- package/dist/providers/typescript/runtimes/session.js.map +1 -0
- package/dist/providers/typescript/stepMacro.d.ts +37 -0
- package/dist/providers/typescript/stepMacro.d.ts.map +1 -0
- package/dist/providers/typescript/stepMacro.js +179 -0
- package/dist/providers/typescript/stepMacro.js.map +1 -0
- package/dist/providers/typescript/terseWorkflowBuilder.d.ts +8 -0
- package/dist/providers/typescript/terseWorkflowBuilder.d.ts.map +1 -0
- package/dist/providers/typescript/terseWorkflowBuilder.js +66 -0
- package/dist/providers/typescript/terseWorkflowBuilder.js.map +1 -0
- package/dist/replay.d.ts +3 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +20 -0
- package/dist/replay.js.map +1 -0
- package/dist/run.d.ts +11 -2
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +153 -42
- package/dist/run.js.map +1 -1
- package/dist/runLocalTestJob.d.ts +5 -1
- package/dist/runLocalTestJob.d.ts.map +1 -1
- package/dist/runLocalTestJob.js +6 -5
- package/dist/runLocalTestJob.js.map +1 -1
- package/dist/sampleEventId.d.ts +4 -0
- package/dist/sampleEventId.d.ts.map +1 -1
- package/dist/sampleEventId.js +4 -0
- package/dist/sampleEventId.js.map +1 -1
- package/dist/shared/ApiRoutes.d.ts +0 -19
- package/dist/shared/ApiRoutes.d.ts.map +1 -1
- package/dist/shared/ApiRoutes.js +1 -17
- package/dist/shared/ApiRoutes.js.map +1 -1
- package/dist/shared/Configs.d.ts +2 -24
- package/dist/shared/Configs.d.ts.map +1 -1
- package/dist/shared/Configs.js +2 -32
- package/dist/shared/Configs.js.map +1 -1
- package/dist/shared/Integrations.d.ts +1 -18
- package/dist/shared/Integrations.d.ts.map +1 -1
- package/dist/shared/Integrations.js +1 -10
- package/dist/shared/Integrations.js.map +1 -1
- package/dist/shared/InvalidationKeys.d.ts +0 -1
- package/dist/shared/InvalidationKeys.d.ts.map +1 -1
- package/dist/shared/InvalidationKeys.js +0 -3
- package/dist/shared/InvalidationKeys.js.map +1 -1
- package/dist/shared/ModelEvents.d.ts +0 -9
- package/dist/shared/ModelEvents.d.ts.map +1 -1
- package/dist/shared/ModelEvents.js +0 -15
- package/dist/shared/ModelEvents.js.map +1 -1
- package/dist/shared/ToolDisplayUtils.d.ts.map +1 -1
- package/dist/shared/ToolDisplayUtils.js +11 -107
- package/dist/shared/ToolDisplayUtils.js.map +1 -1
- package/dist/shared/types.d.ts +108 -1013
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/dist/terseWorld.d.ts +4 -0
- package/dist/terseWorld.d.ts.map +1 -0
- package/dist/terseWorld.js +46 -0
- package/dist/terseWorld.js.map +1 -0
- package/dist/test.d.ts +1 -2
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +23 -43
- package/dist/test.js.map +1 -1
- package/dist/urls.d.ts +3 -0
- package/dist/urls.d.ts.map +1 -0
- package/dist/urls.js +27 -0
- package/dist/urls.js.map +1 -0
- package/dist/util.d.ts +3 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +3 -3
- package/dist/util.js.map +1 -1
- package/package.json +7 -3
- package/dist/commands/deployTheme.d.ts +0 -28
- package/dist/commands/deployTheme.d.ts.map +0 -1
- package/dist/commands/deployTheme.js +0 -68
- package/dist/commands/deployTheme.js.map +0 -1
- package/dist/commands/dev.d.ts +0 -3
- package/dist/commands/dev.d.ts.map +0 -1
- package/dist/commands/dev.js +0 -47
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/fsExec.d.ts +0 -8
- package/dist/commands/fsExec.d.ts.map +0 -1
- package/dist/commands/fsExec.js +0 -46
- package/dist/commands/fsExec.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -1
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -2
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/terseCliTheme.d.ts +0 -28
- package/dist/commands/terseCliTheme.d.ts.map +0 -1
- package/dist/commands/terseCliTheme.js +0 -68
- package/dist/commands/terseCliTheme.js.map +0 -1
- package/dist/perf.d.ts +0 -9
- package/dist/perf.d.ts.map +0 -1
- package/dist/perf.js +0 -59
- package/dist/perf.js.map +0 -1
- package/dist/providers/codegen.test.d.ts +0 -2
- package/dist/providers/codegen.test.d.ts.map +0 -1
- package/dist/providers/codegen.test.js +0 -45
- package/dist/providers/codegen.test.js.map +0 -1
- package/dist/providers/python/PythonProvider.test.d.ts +0 -2
- package/dist/providers/python/PythonProvider.test.d.ts.map +0 -1
- package/dist/providers/python/PythonProvider.test.js +0 -169
- package/dist/providers/python/PythonProvider.test.js.map +0 -1
- package/dist/providers/typescript/prepareCodegenData.test.d.ts +0 -2
- package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +0 -1
- package/dist/providers/typescript/prepareCodegenData.test.js +0 -54
- package/dist/providers/typescript/prepareCodegenData.test.js.map +0 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { isAgentApprovalHandlingClaimed, setLocalPromptUiPause } from "terse-sdk";
|
|
3
|
+
import { isCliRunCommandEnabled } from "../../../env.js";
|
|
4
|
+
import { openSessionStream, promptForToolApproval, submitApprovalDecision } from "../../shared/sessionStream.js";
|
|
5
|
+
let sessionPaused = false;
|
|
6
|
+
// Holds a session stream open (for tool-approval routing) for the duration of `action`.
|
|
7
|
+
export async function withSession(apiKey, isVerbose, pauseUiAround, action) {
|
|
8
|
+
let latestRunId = null;
|
|
9
|
+
const handleSessionEvent = async (event) => {
|
|
10
|
+
if (event.type === "run_started") {
|
|
11
|
+
latestRunId = event.runId;
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (event.type !== "tool_approval_requested")
|
|
15
|
+
return;
|
|
16
|
+
if (isCliRunCommandEnabled())
|
|
17
|
+
return;
|
|
18
|
+
if (isAgentApprovalHandlingClaimed())
|
|
19
|
+
return;
|
|
20
|
+
const runId = latestRunId;
|
|
21
|
+
if (!runId) {
|
|
22
|
+
console.error(chalk.red(" Received approval request before run_started — cannot route decision."));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const { toolName, arguments: rawArguments, stepId } = event.toolApprovalRequested;
|
|
26
|
+
if (!process.stdout.isTTY) {
|
|
27
|
+
console.error(chalk.red(` Approval required for "${toolName}" but no TTY is attached — auto-rejecting.`));
|
|
28
|
+
console.error(chalk.dim(" In non-interactive contexts, set TerseAgent.onApprovalRequired in your job code."));
|
|
29
|
+
try {
|
|
30
|
+
await submitApprovalDecision(apiKey, { runId, stepId, approved: false });
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error(chalk.red(` Failed to submit auto-reject: ${error.message}`));
|
|
34
|
+
}
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
sessionPaused = true;
|
|
38
|
+
try {
|
|
39
|
+
await pauseUiAround(async () => {
|
|
40
|
+
const approved = await promptForToolApproval(toolName, rawArguments);
|
|
41
|
+
await submitApprovalDecision(apiKey, { runId, stepId, approved });
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error(chalk.red(` Failed to submit approval decision: ${error.message}`));
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
sessionPaused = false;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const session = await openSessionStream(apiKey, { verbose: isVerbose, isPaused: () => sessionPaused, onEvent: handleSessionEvent });
|
|
52
|
+
setLocalPromptUiPause(pauseUiAround);
|
|
53
|
+
try {
|
|
54
|
+
return await action(session.sessionId);
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
setLocalPromptUiPause(undefined);
|
|
58
|
+
session.close?.();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/providers/typescript/runtimes/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type TS from "typescript";
|
|
2
|
+
export type StepDef = {
|
|
3
|
+
name: string;
|
|
4
|
+
def: string;
|
|
5
|
+
};
|
|
6
|
+
export type StepEdit = {
|
|
7
|
+
start: number;
|
|
8
|
+
end: number;
|
|
9
|
+
text: string;
|
|
10
|
+
};
|
|
11
|
+
export declare enum StepCallKind {
|
|
12
|
+
JobStep = "jobStep",
|
|
13
|
+
Step = "step"
|
|
14
|
+
}
|
|
15
|
+
export type StepCall = {
|
|
16
|
+
kind: StepCallKind.Step;
|
|
17
|
+
call: TS.CallExpression;
|
|
18
|
+
} | {
|
|
19
|
+
kind: StepCallKind.JobStep;
|
|
20
|
+
call: TS.CallExpression;
|
|
21
|
+
config: TS.ObjectLiteralExpression;
|
|
22
|
+
};
|
|
23
|
+
export declare function findStepImportName(ts: typeof TS, sf: TS.SourceFile): string | null;
|
|
24
|
+
export declare function matchStepCall(ts: typeof TS, node: TS.Node, stepName: string | null): StepCall | null;
|
|
25
|
+
export declare function transformStep(ts: typeof TS, sf: TS.SourceFile, step: Extract<StepCall, {
|
|
26
|
+
kind: StepCallKind.Step;
|
|
27
|
+
}>, fileName: string, index: number, stepName: string | null): {
|
|
28
|
+
stepDef: StepDef;
|
|
29
|
+
edit: StepEdit;
|
|
30
|
+
};
|
|
31
|
+
export declare function transformJobStep(ts: typeof TS, sf: TS.SourceFile, step: Extract<StepCall, {
|
|
32
|
+
kind: StepCallKind.JobStep;
|
|
33
|
+
}>, fileName: string, index: number, stepName: string | null): {
|
|
34
|
+
stepDef: StepDef;
|
|
35
|
+
edit: StepEdit;
|
|
36
|
+
} | null;
|
|
37
|
+
//# sourceMappingURL=stepMacro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stepMacro.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/stepMacro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAEhC,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AACnD,MAAM,MAAM,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnE,oBAAY,YAAY;IACpB,OAAO,YAAY;IACnB,IAAI,SAAS;CAChB;AAED,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;IAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC;IAAC,MAAM,EAAE,EAAE,CAAC,uBAAuB,CAAA;CAAE,CAAA;AAIzK,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CASlF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CASpG;AAOD,wBAAgB,aAAa,CACzB,EAAE,EAAE,OAAO,EAAE,EACb,EAAE,EAAE,EAAE,CAAC,UAAU,EACjB,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAA;CAAE,CAAC,EACpD,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,IAAI,GACxB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CA2CtC;AAID,wBAAgB,gBAAgB,CAC5B,EAAE,EAAE,OAAO,EAAE,EACb,EAAE,EAAE,EAAE,CAAC,UAAU,EACjB,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAA;CAAE,CAAC,EACvD,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,IAAI,GACxB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG,IAAI,CAe7C"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
export var StepCallKind;
|
|
2
|
+
(function (StepCallKind) {
|
|
3
|
+
StepCallKind["JobStep"] = "jobStep";
|
|
4
|
+
StepCallKind["Step"] = "step";
|
|
5
|
+
})(StepCallKind || (StepCallKind = {}));
|
|
6
|
+
// The local binding of `import { step } from "terse-sdk"` (aliases included), so plain
|
|
7
|
+
// `step` stays a safe name: user-defined step() functions never match the macro.
|
|
8
|
+
export function findStepImportName(ts, sf) {
|
|
9
|
+
for (const statement of sf.statements) {
|
|
10
|
+
if (!ts.isImportDeclaration(statement) || !ts.isStringLiteralLike(statement.moduleSpecifier) || statement.moduleSpecifier.text !== "terse-sdk")
|
|
11
|
+
continue;
|
|
12
|
+
const named = statement.importClause?.namedBindings;
|
|
13
|
+
if (!named || !ts.isNamedImports(named))
|
|
14
|
+
continue;
|
|
15
|
+
const element = named.elements.find(el => (el.propertyName ?? el.name).text === "step");
|
|
16
|
+
if (element)
|
|
17
|
+
return element.name.text;
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
export function matchStepCall(ts, node, stepName) {
|
|
22
|
+
if (!ts.isCallExpression(node) || !ts.isIdentifier(node.expression))
|
|
23
|
+
return null;
|
|
24
|
+
if (stepName !== null && node.expression.text === stepName) {
|
|
25
|
+
return { kind: StepCallKind.Step, call: node };
|
|
26
|
+
}
|
|
27
|
+
if (node.expression.text === "jobStep" && node.arguments.length > 0 && ts.isObjectLiteralExpression(node.arguments[0])) {
|
|
28
|
+
return { kind: StepCallKind.JobStep, call: node, config: node.arguments[0] };
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
// MARK: step
|
|
33
|
+
// `step(client.method(args))` hoists only the callee into a "use step" function.
|
|
34
|
+
// The argument expressions stay at the call site, where they evaluate in workflow
|
|
35
|
+
// scope and cross the step boundary as serialized step arguments.
|
|
36
|
+
export function transformStep(ts, sf, step, fileName, index, stepName) {
|
|
37
|
+
const { call } = step;
|
|
38
|
+
const inner = call.arguments.length === 1 ? call.arguments[0] : undefined;
|
|
39
|
+
if (inner === undefined)
|
|
40
|
+
throw stepMacroError(sf, call, fileName, "step() takes exactly one argument: a direct call, e.g. step(client.method(args)).");
|
|
41
|
+
if (!ts.isCallExpression(inner))
|
|
42
|
+
throw stepMacroError(sf, call, fileName, "step() must wrap a direct call, e.g. step(client.method(args)). Storing the promise in a variable first is not supported.");
|
|
43
|
+
if (containsStepCall(ts, inner, stepName))
|
|
44
|
+
throw stepMacroError(sf, call, fileName, "Steps cannot be nested inside a step() call. Await each step separately.");
|
|
45
|
+
const calleeNames = [];
|
|
46
|
+
let optionalChain = false;
|
|
47
|
+
let calleeRoot = inner.expression;
|
|
48
|
+
while (ts.isPropertyAccessExpression(calleeRoot)) {
|
|
49
|
+
calleeNames.unshift(calleeRoot.name.text);
|
|
50
|
+
if (calleeRoot.questionDotToken)
|
|
51
|
+
optionalChain = true;
|
|
52
|
+
calleeRoot = calleeRoot.expression;
|
|
53
|
+
}
|
|
54
|
+
if (!ts.isIdentifier(calleeRoot)) {
|
|
55
|
+
throw stepMacroError(sf, call, fileName, "step() requires a plain property path like step(client.method(args)). Computed access and intermediate calls are not supported.");
|
|
56
|
+
}
|
|
57
|
+
calleeNames.unshift(calleeRoot.text);
|
|
58
|
+
if (isDeclaredInEnclosingScopes(ts, call, calleeRoot.text)) {
|
|
59
|
+
throw stepMacroError(sf, call, fileName, `\`${calleeRoot.text}\` is declared inside the handler. The step runs in a separate bundle, so move \`${calleeRoot.text}\` to module scope.`);
|
|
60
|
+
}
|
|
61
|
+
for (const arg of inner.arguments) {
|
|
62
|
+
const fnArg = findLiteralFunctionArg(ts, arg);
|
|
63
|
+
if (fnArg) {
|
|
64
|
+
throw stepMacroError(sf, fnArg, fileName, "A function passed as a step argument cannot cross the step boundary, because step arguments are serialized into the journal. Move the whole call into a module-scope helper so the callback stays inside the step, then wrap the helper call in step().");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// `typeof` type queries reject `?.`, so optional-chain callees fall back to untyped args.
|
|
68
|
+
const calleeText = inner.expression.getText(sf);
|
|
69
|
+
const paramsType = optionalChain ? "" : `: Parameters<typeof ${calleeText}>`;
|
|
70
|
+
const returnType = optionalChain ? "" : `: Promise<Awaited<ReturnType<typeof ${calleeText}>>>`;
|
|
71
|
+
const name = `terseStep_${calleeNames.join("_")}_${index}`;
|
|
72
|
+
const def = `export async function ${name}(...__terseArgs${paramsType})${returnType} {\n` + ` "use step"\n` + ` return await ${calleeText}(...__terseArgs)\n` + `}`;
|
|
73
|
+
const text = `${name}(${inner.arguments.map(a => a.getText(sf)).join(", ")})`;
|
|
74
|
+
return { stepDef: { name, def }, edit: { start: call.getStart(sf), end: call.getEnd(), text } };
|
|
75
|
+
}
|
|
76
|
+
// MARK: jobStep
|
|
77
|
+
export function transformJobStep(ts, sf, step, fileName, index, stepName) {
|
|
78
|
+
const isProp = (p, key) => ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === key;
|
|
79
|
+
const { call, config } = step;
|
|
80
|
+
const inputProp = config.properties.find(p => isProp(p, "input"));
|
|
81
|
+
const inputSchemaProp = config.properties.find(p => isProp(p, "inputSchema"));
|
|
82
|
+
const outputSchemaProp = config.properties.find(p => isProp(p, "outputSchema"));
|
|
83
|
+
const run = config.properties.find(p => isProp(p, "run"))?.initializer;
|
|
84
|
+
if (!run || !(ts.isArrowFunction(run) || ts.isFunctionExpression(run)))
|
|
85
|
+
return null;
|
|
86
|
+
if (containsStepCall(ts, config, stepName))
|
|
87
|
+
throw stepMacroError(sf, call, fileName, "Steps cannot be nested inside a jobStep(). Await each step separately.");
|
|
88
|
+
const name = `terseStep_${index}`;
|
|
89
|
+
const def = stepFunctionText(ts, sf, name, run, inputSchemaProp?.initializer, outputSchemaProp?.initializer);
|
|
90
|
+
const text = `${name}(${inputProp ? inputProp.initializer.getText(sf) : ""})`;
|
|
91
|
+
return { stepDef: { name, def }, edit: { start: call.getStart(sf), end: call.getEnd(), text } };
|
|
92
|
+
}
|
|
93
|
+
function stepFunctionText(ts, sf, name, run, inputSchema, outputSchema) {
|
|
94
|
+
const param = inputSchema ? "__terseArgs" : "";
|
|
95
|
+
const parseInput = inputSchema ? ` const __terseInput = (${inputSchema.getText(sf)}).parse(__terseArgs)\n` : "";
|
|
96
|
+
const callRun = inputSchema ? `(${run.getText(sf)})(__terseInput)` : `(${run.getText(sf)})()`;
|
|
97
|
+
const validated = outputSchema ? `(${outputSchema.getText(sf)}).parse(__terseResult)` : `__terseResult`;
|
|
98
|
+
return `export async function ${name}(${param}) {\n` + ` "use step"\n` + parseInput + ` const __terseResult = await ${callRun}\n` + ` return ${validated}\n` + `}`;
|
|
99
|
+
}
|
|
100
|
+
// MARK: Helpers
|
|
101
|
+
// Finds a function expression that ends up inside the evaluated argument value,
|
|
102
|
+
// where serialization would reject it: the argument itself, or a literal object
|
|
103
|
+
// property / array element (recursively). Functions merely consumed while the
|
|
104
|
+
// argument evaluates, like the arrow in `users.map(u => u.email)`, are fine since
|
|
105
|
+
// only the resulting data crosses the boundary. Those sit inside call expressions,
|
|
106
|
+
// which this deliberately does not descend into.
|
|
107
|
+
function findLiteralFunctionArg(ts, node) {
|
|
108
|
+
if (ts.isArrowFunction(node) || ts.isFunctionExpression(node))
|
|
109
|
+
return node;
|
|
110
|
+
if (ts.isParenthesizedExpression(node) || ts.isAsExpression(node) || ts.isSatisfiesExpression(node))
|
|
111
|
+
return findLiteralFunctionArg(ts, node.expression);
|
|
112
|
+
if (ts.isObjectLiteralExpression(node)) {
|
|
113
|
+
for (const property of node.properties) {
|
|
114
|
+
if (ts.isMethodDeclaration(property) || ts.isGetAccessorDeclaration(property) || ts.isSetAccessorDeclaration(property))
|
|
115
|
+
return property;
|
|
116
|
+
if (ts.isPropertyAssignment(property)) {
|
|
117
|
+
const found = findLiteralFunctionArg(ts, property.initializer);
|
|
118
|
+
if (found)
|
|
119
|
+
return found;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
if (ts.isArrayLiteralExpression(node)) {
|
|
125
|
+
for (const element of node.elements) {
|
|
126
|
+
const found = findLiteralFunctionArg(ts, element);
|
|
127
|
+
if (found)
|
|
128
|
+
return found;
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
function stepMacroError(sf, node, fileName, message) {
|
|
135
|
+
const line = sf.getLineAndCharacterOfPosition(node.getStart(sf)).line + 1;
|
|
136
|
+
return new Error(`${fileName}:${line}: ${message}`);
|
|
137
|
+
}
|
|
138
|
+
function containsStepCall(ts, node, stepName) {
|
|
139
|
+
const walk = (n) => (matchStepCall(ts, n, stepName) ? true : ts.forEachChild(n, walk));
|
|
140
|
+
return ts.forEachChild(node, walk) ?? false;
|
|
141
|
+
}
|
|
142
|
+
// Lexical lookup along the parent chain: params of enclosing functions and
|
|
143
|
+
// declarations directly inside enclosing blocks. Anything not found here is
|
|
144
|
+
// module-scope (or a global), which the steps bundle can also see.
|
|
145
|
+
function isDeclaredInEnclosingScopes(ts, from, name) {
|
|
146
|
+
let cur = from.parent;
|
|
147
|
+
while (cur && !ts.isSourceFile(cur)) {
|
|
148
|
+
if (scopeDeclares(ts, cur, name))
|
|
149
|
+
return true;
|
|
150
|
+
cur = cur.parent;
|
|
151
|
+
}
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
function scopeDeclares(ts, node, name) {
|
|
155
|
+
if (ts.isFunctionLike(node))
|
|
156
|
+
return node.parameters.some(p => bindingDeclares(ts, p.name, name));
|
|
157
|
+
if (ts.isBlock(node))
|
|
158
|
+
return node.statements.some(s => statementDeclares(ts, s, name));
|
|
159
|
+
if (ts.isCatchClause(node))
|
|
160
|
+
return node.variableDeclaration !== undefined && bindingDeclares(ts, node.variableDeclaration.name, name);
|
|
161
|
+
if (ts.isForOfStatement(node) || ts.isForInStatement(node))
|
|
162
|
+
return ts.isVariableDeclarationList(node.initializer) && node.initializer.declarations.some(d => bindingDeclares(ts, d.name, name));
|
|
163
|
+
if (ts.isForStatement(node))
|
|
164
|
+
return node.initializer !== undefined && ts.isVariableDeclarationList(node.initializer) && node.initializer.declarations.some(d => bindingDeclares(ts, d.name, name));
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
function statementDeclares(ts, statement, name) {
|
|
168
|
+
if (ts.isVariableStatement(statement))
|
|
169
|
+
return statement.declarationList.declarations.some(d => bindingDeclares(ts, d.name, name));
|
|
170
|
+
if (ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement))
|
|
171
|
+
return statement.name?.text === name;
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
function bindingDeclares(ts, binding, name) {
|
|
175
|
+
if (ts.isIdentifier(binding))
|
|
176
|
+
return binding.text === name;
|
|
177
|
+
return binding.elements.some(el => !ts.isOmittedExpression(el) && bindingDeclares(ts, el.name, name));
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=stepMacro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stepMacro.js","sourceRoot":"","sources":["../../../src/providers/typescript/stepMacro.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseBuilder } from "@workflow/builders";
|
|
2
|
+
export declare class TerseWorkflowBuilder extends BaseBuilder {
|
|
3
|
+
private readonly outDir;
|
|
4
|
+
constructor(workingDir: string, scanDir: string, outDir: string);
|
|
5
|
+
protected get shouldLogBaseBuilderInfo(): boolean;
|
|
6
|
+
build(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=terseWorkflowBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terseWorkflowBuilder.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/terseWorkflowBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,oBAAoB,CAAA;AAYzE,qBAAa,oBAAqB,SAAQ,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAY/D,SAAS,KAAK,wBAAwB,IAAI,OAAO,CAEhD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAuB/B"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { BaseBuilder, createBaseBuilderConfig } from "@workflow/builders";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
// Modeled on @workflow/nest's NestLocalBuilder: scan `scanDir` and emit bundles
|
|
5
|
+
// to an out dir OUTSIDE it. The builder globs inputs rooted at `dirs`, so output
|
|
6
|
+
// kept outside `dirs` is never re-globbed as an input — which is what lets
|
|
7
|
+
// re-tests overwrite the bundles cleanly. (StandaloneBuilder forces dirs: ['.'],
|
|
8
|
+
// scanning the whole project, which is why its output collided with itself.)
|
|
9
|
+
// `scanDir` (relative to workingDir) holds the macro-transformed sources, so the
|
|
10
|
+
// builder discovers the `"use workflow"` functions the job macro injected into
|
|
11
|
+
// each createJob's onTrigger.
|
|
12
|
+
export class TerseWorkflowBuilder extends BaseBuilder {
|
|
13
|
+
outDir;
|
|
14
|
+
constructor(workingDir, scanDir, outDir) {
|
|
15
|
+
super({
|
|
16
|
+
...createBaseBuilderConfig({ workingDir, dirs: [scanDir], watch: false }),
|
|
17
|
+
buildTarget: "standalone",
|
|
18
|
+
stepsBundlePath: path.join(outDir, "steps.cjs"),
|
|
19
|
+
workflowsBundlePath: path.join(outDir, "workflows.cjs"),
|
|
20
|
+
webhookBundlePath: path.join(outDir, "webhook.cjs")
|
|
21
|
+
});
|
|
22
|
+
this.outDir = outDir;
|
|
23
|
+
}
|
|
24
|
+
// Raw builder logs would corrupt the CLI's active clack rendering.
|
|
25
|
+
get shouldLogBaseBuilderInfo() {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
async build() {
|
|
29
|
+
await withSerdeWarningsSuppressed(async () => {
|
|
30
|
+
const inputFiles = await this.getInputFiles();
|
|
31
|
+
fs.mkdirSync(this.outDir, { recursive: true });
|
|
32
|
+
const { manifest: workflows } = await this.createWorkflowsBundle({ outfile: path.join(this.outDir, "workflows.cjs"), format: "cjs", inputFiles });
|
|
33
|
+
const { manifest: steps } = await this.createStepsBundle({ outfile: path.join(this.outDir, "steps.cjs"), format: "cjs", inputFiles });
|
|
34
|
+
await this.createWebhookBundle({ outfile: path.join(this.outDir, "webhook.cjs"), bundle: false });
|
|
35
|
+
await this.createManifest({
|
|
36
|
+
workflowBundlePath: path.join(this.outDir, "workflows.cjs"),
|
|
37
|
+
manifestDir: this.outDir,
|
|
38
|
+
manifest: {
|
|
39
|
+
steps: { ...steps.steps, ...workflows.steps },
|
|
40
|
+
workflows: { ...steps.workflows, ...workflows.workflows },
|
|
41
|
+
classes: { ...steps.classes, ...workflows.classes }
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
// generated build output — keep it out of the user's git
|
|
45
|
+
fs.writeFileSync(path.join(this.outDir, ".gitignore"), "*\n");
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// False positive: the serde checker scans the pre-tree-shaken bundle and pins
|
|
50
|
+
// @workflow/core's own Node-builtin imports on user classes. The builder's esbuild
|
|
51
|
+
// plugin still fails the build on genuine violations after "use step" stripping.
|
|
52
|
+
async function withSerdeWarningsSuppressed(fn) {
|
|
53
|
+
const originalWarn = console.warn;
|
|
54
|
+
console.warn = (...args) => {
|
|
55
|
+
if (typeof args[0] === "string" && args[0].includes("Serde warning for"))
|
|
56
|
+
return;
|
|
57
|
+
originalWarn(...args);
|
|
58
|
+
};
|
|
59
|
+
try {
|
|
60
|
+
return await fn();
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
console.warn = originalWarn;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=terseWorkflowBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terseWorkflowBuilder.js","sourceRoot":"","sources":["../../../src/providers/typescript/terseWorkflowBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/replay.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAGvE,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzG"}
|
package/dist/replay.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { readApiKeyOrBail, resolveEventFromRunId } from "./api.js";
|
|
3
|
+
import { loadJob } from "./loadJob.js";
|
|
4
|
+
import { resolveProvider } from "./providers/resolveProvider.js";
|
|
5
|
+
export async function replay(runId, provider = resolveProvider()) {
|
|
6
|
+
const apiKey = readApiKeyOrBail();
|
|
7
|
+
if (!runId) {
|
|
8
|
+
console.error(chalk.red("Error: --run-id is required.\n"));
|
|
9
|
+
console.error(chalk.dim(" Usage: terse replay --run-id <run-id>"));
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
const runHistoryRecord = await resolveEventFromRunId(runId, apiKey);
|
|
13
|
+
if (!runHistoryRecord) {
|
|
14
|
+
console.error(chalk.red("Error: Could not fetch the trigger event for run ${runId}.\n"));
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const { job } = await loadJob(provider, runHistoryRecord.agentName);
|
|
18
|
+
await provider.executeJob(job, null, runHistoryRecord.event, { verbose: true });
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAa,EAAE,WAA6B,eAAe,EAAE;IACtF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;IAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAA;QAC1D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAA;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAEnE,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACnF,CAAC"}
|
package/dist/run.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { CreateJobParameters } from "terse-sdk";
|
|
2
|
+
import type { SerializedEvent } from "./shared/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create a TerseAgent scoped to a job's skills and execute onTrigger.
|
|
5
|
+
* Tools are registered from the codegen factory on globalThis (needed because
|
|
6
|
+
* tsx may load a separate module instance of terse-sdk).
|
|
7
|
+
*/
|
|
8
|
+
export declare function executeJob(job: CreateJobParameters, event: SerializedEvent, options?: {
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
export declare function run(jobName?: string, eventJson?: string, eventFile?: string): Promise<void>;
|
|
3
12
|
//# sourceMappingURL=run.d.ts.map
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAc,MAAM,WAAW,CAAA;AAK3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAIxD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCjI;AAED,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCjG"}
|