@shipfox/expression 2.2.0 → 2.3.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 +14 -5
- package/dist/expression/create-workflow-expression.js +40 -15
- package/dist/expression/create-workflow-expression.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/dist/workflow-context/workflow-context-docs.d.ts +6 -2
- package/dist/workflow-context/workflow-context-docs.d.ts.map +1 -1
- package/dist/workflow-context/workflow-context-docs.js +5 -0
- package/dist/workflow-context/workflow-context-docs.js.map +1 -1
- package/dist/workflow-context/workflow-context.d.ts +43 -10
- package/dist/workflow-context/workflow-context.d.ts.map +1 -1
- package/dist/workflow-context/workflow-context.js +108 -14
- package/dist/workflow-context/workflow-context.js.map +1 -1
- package/dist/workflow-function-registry.d.ts.map +1 -1
- package/dist/workflow-function-registry.js +45 -0
- package/dist/workflow-function-registry.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WorkflowContextName } from './workflow-context.js';
|
|
1
|
+
import type { WorkflowContextName, WorkflowContextReservedRoot } from './workflow-context.js';
|
|
2
2
|
/**
|
|
3
3
|
* Reader-facing descriptions for every context root and property.
|
|
4
4
|
*
|
|
@@ -8,7 +8,7 @@ import type { WorkflowContextName } from './workflow-context.js';
|
|
|
8
8
|
* description for a property that no longer exists.
|
|
9
9
|
*/
|
|
10
10
|
export interface WorkflowContextDoc {
|
|
11
|
-
readonly root: WorkflowContextName;
|
|
11
|
+
readonly root: WorkflowContextName | WorkflowContextReservedRoot;
|
|
12
12
|
readonly summary: string;
|
|
13
13
|
/** Why an open-shape root has no property table. */
|
|
14
14
|
readonly shapeNote?: string;
|
|
@@ -181,5 +181,9 @@ export declare const workflowContextDocs: readonly [{
|
|
|
181
181
|
readonly root: 'secrets';
|
|
182
182
|
readonly summary: 'Workspace and project secrets.';
|
|
183
183
|
readonly shapeNote: 'The keys are the secret names the workspace defines. See [Secrets and variables](/reference/secrets-variables).';
|
|
184
|
+
}, {
|
|
185
|
+
readonly root: 'result';
|
|
186
|
+
readonly summary: 'The result returned by the current tool step.';
|
|
187
|
+
readonly shapeNote: 'The selected tool catalog defines this value. It is readable only while mapping tool outputs at step reporting.';
|
|
184
188
|
}];
|
|
185
189
|
//# sourceMappingURL=workflow-context-docs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-context-docs.d.ts","sourceRoot":"","sources":["../../src/workflow-context/workflow-context-docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-context-docs.d.ts","sourceRoot":"","sources":["../../src/workflow-context/workflow-context-docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -162,6 +162,11 @@ export const workflowContextDocs = [
|
|
|
162
162
|
root: 'secrets',
|
|
163
163
|
summary: 'Workspace and project secrets.',
|
|
164
164
|
shapeNote: 'The keys are the secret names the workspace defines. See [Secrets and variables](/reference/secrets-variables).'
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
root: 'result',
|
|
168
|
+
summary: 'The result returned by the current tool step.',
|
|
169
|
+
shapeNote: 'The selected tool catalog defines this value. It is readable only while mapping tool outputs at step reporting.'
|
|
165
170
|
}
|
|
166
171
|
];
|
|
167
172
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/workflow-context/workflow-context-docs.ts"],"sourcesContent":["import type {WorkflowContextName} from './workflow-context.js';\n\n/**\n * Reader-facing descriptions for every context root and property.\n *\n * They live beside the type registry so a new field cannot ship undescribed:\n * the documentation generator renders types from the registry and looks up each\n * property here, and its check fails on a property with no description or a\n * description for a property that no longer exists.\n */\nexport interface WorkflowContextDoc {\n readonly root: WorkflowContextName;\n readonly summary: string;\n /** Why an open-shape root has no property table. */\n readonly shapeNote?: string;\n /** Prefix shown in the property column, such as `needs[*].`. */\n readonly propertyPrefix?: string;\n /** Description per property path, relative to the root. */\n readonly fields?: Readonly<Record<string, string>>;\n /** Paths whose element shape another root already documents. */\n readonly collapse?: readonly string[];\n}\n\nconst executionFields = {\n index: 'Position of the execution in its job, starting at zero.',\n name: 'Resolved execution name, or the job name when `execution_name` is not set.',\n status: 'Final status of the execution.',\n started_at: 'Time the execution started.',\n finished_at: 'Time the execution finished.',\n events: 'Listener events in the batch that started this execution. Empty for a standard job.',\n 'events[*].source': 'Integration connection slug that delivered the event.',\n 'events[*].event': 'Shipfox event name.',\n 'events[*].delivery_id': 'Identifier of the provider delivery.',\n 'events[*].received_at': 'Time Shipfox received the event.',\n 'events[*].project':\n 'Shipfox project resolved from the event repository. Null when there is none.',\n 'events[*].project.id': 'Identifier of the resolved project.',\n 'events[*].repository':\n 'Repository the event came from, as `owner/name`. Null when there is none.',\n 'events[*].ref': 'Git ref the event carried. Null when there is none.',\n 'events[*].commit': 'Commit SHA the event carried. Null when there is none.',\n 'events[*].data': 'Raw event payload. The provider owns its shape.',\n outputs: 'Outputs the execution produced, keyed by output name.',\n} as const;\n\nconst jobEntityFields = {\n key: 'Key of the job in the `jobs` map.',\n status: 'Final status of the job.',\n outputs: 'Declared job outputs, keyed by output name.',\n executions:\n 'Executions of the job, each with the properties of the `execution` context. A standard job has one.',\n} as const;\n\nconst stepEntityFields = {\n status: 'Final status of the step.',\n exit_code: 'Exit code of the most recent finished attempt.',\n outputs: 'Declared step outputs of the most recent finished attempt.',\n response: 'Final agent response. Absent on a run step.',\n gate: 'Gate result of the most recent finished attempt. Absent when the step has no gate.',\n 'gate.passed': 'Whether the gate expression passed.',\n 'gate.source': 'Gate expression that produced the result.',\n 'gate.reason': 'Why Shipfox could not check the gate.',\n 'gate.exit_code': 'Exit code the gate read.',\n attempts: 'Every finished attempt of the step, oldest first.',\n 'attempts[*].status': 'Final status of the attempt.',\n 'attempts[*].exit_code': 'Exit code the attempt reported.',\n 'attempts[*].outputs': 'Declared outputs the attempt reported.',\n 'attempts[*].response': 'Final agent response of the attempt. Absent on a run step.',\n 'attempts[*].gate': 'Gate result of the attempt. Absent when the step has no gate.',\n 'attempts[*].gate.passed': 'Whether the gate expression passed.',\n 'attempts[*].gate.source': 'Gate expression that produced the result.',\n 'attempts[*].gate.reason': 'Why Shipfox could not check the gate.',\n 'attempts[*].gate.exit_code': 'Exit code the gate read.',\n} as const;\n\nexport const workflowContextDocs = [\n {\n root: 'workflow',\n summary: 'The workflow definition this run came from.',\n fields: {\n id: 'Identifier of the workflow definition.',\n name: 'Workflow `name` from the definition.',\n },\n },\n {\n root: 'run',\n summary: 'The current run.',\n fields: {\n id: 'Identifier of the run.',\n number: 'Sequential run number within the workflow definition.',\n name: 'Resolved run name, or the workflow name when `run_name` is not set.',\n project_id: 'Identifier of the project that owns the run.',\n workspace_id: 'Identifier of the workspace that owns the run.',\n created_at: 'Time the run was created.',\n },\n },\n {\n root: 'trigger',\n summary: 'The trigger that started the run.',\n fields: {\n source: 'Integration connection slug, or `manual` or `cron`.',\n event: 'Shipfox event name that matched the trigger.',\n project: 'Shipfox project resolved from the event repository. Null when there is none.',\n 'project.id': 'Identifier of the resolved project.',\n repository: 'Repository the event came from, as `owner/name`. Null when there is none.',\n ref: 'Git ref the event carried. Null when there is none.',\n commit: 'Commit SHA the event carried. Null when there is none.',\n },\n },\n {\n root: 'event',\n summary: 'The raw payload of the event that started the run.',\n shapeNote:\n 'The provider owns this payload, so it has no fixed shape. Each provider page under [Integrations](/integrations) lists the events Shipfox delivers and links the payload each one carries.',\n },\n {\n root: 'inputs',\n summary: 'Values the trigger `with` block passed into the run.',\n shapeNote:\n 'The keys are the ones the trigger declares. See [trigger fields](/reference/workflow-schema#trigger-fields).',\n },\n {\n root: 'job',\n summary: 'The current job.',\n fields: {\n key: 'Key of the job in the `jobs` map.',\n name: 'Job `name`, or the job key when no name is set.',\n },\n },\n {\n root: 'executions',\n summary: 'Every execution of the current job.',\n propertyPrefix: 'executions[*].',\n fields: executionFields,\n },\n {\n root: 'execution',\n summary: 'The current execution of the job.',\n fields: {\n ...executionFields,\n failed: 'Whether an earlier step in this execution failed.',\n },\n },\n {\n root: 'jobs',\n summary: 'Upstream jobs, keyed by job key.',\n shapeNote: 'The keys are the job keys the workflow declares.',\n propertyPrefix: 'jobs.<job_key>.',\n fields: jobEntityFields,\n collapse: ['executions'],\n },\n {\n root: 'needs',\n summary: 'The jobs this job declares in `needs`.',\n propertyPrefix: 'needs[*].',\n fields: jobEntityFields,\n collapse: ['executions'],\n },\n {\n root: 'steps',\n summary: 'Earlier steps of the current job, keyed by step key.',\n shapeNote: 'The keys are the step keys the workflow declares.',\n propertyPrefix: 'steps.<step_key>.',\n fields: stepEntityFields,\n },\n {\n root: 'step',\n summary: 'The current step. Its properties depend on the field that reads it.',\n fields: {\n attempt: 'Attempt number of the step, starting at one. Not readable in `gate.success`.',\n is_retry: 'Whether this is a repeat attempt. Not readable in `gate.success`.',\n restart: 'Set when a gate restarted this step. Not readable in `gate.success`.',\n 'restart.from':\n 'The step whose gate restarted this attempt, with the properties of a `steps` entry. Not readable in `gate.success`.',\n 'restart.feedback': 'Feedback the restarting gate produced. Not readable in `gate.success`.',\n exit_code: 'Exit code the step reported. Readable in `gate.success` only.',\n status: 'Status the step reported. Readable in `gate.success` only.',\n outputs: 'Outputs the step reported. Readable in `gate.success` only.',\n },\n collapse: ['restart.from'],\n },\n {\n root: 'vars',\n summary: 'Workspace and project variables.',\n shapeNote:\n 'The keys are the variable names the workspace defines. See [Secrets and variables](/reference/secrets-variables).',\n },\n {\n root: 'secrets',\n summary: 'Workspace and project secrets.',\n shapeNote:\n 'The keys are the secret names the workspace defines. See [Secrets and variables](/reference/secrets-variables).',\n },\n] as const satisfies readonly WorkflowContextDoc[];\n"],"names":["executionFields","index","name","status","started_at","finished_at","events","outputs","jobEntityFields","key","executions","stepEntityFields","exit_code","response","gate","attempts","workflowContextDocs","root","summary","fields","id","number","project_id","workspace_id","created_at","source","event","project","repository","ref","commit","shapeNote","propertyPrefix","failed","collapse","attempt","is_retry","restart"],"mappings":"AAuBA,MAAMA,kBAAkB;IACtBC,OAAO;IACPC,MAAM;IACNC,QAAQ;IACRC,YAAY;IACZC,aAAa;IACbC,QAAQ;IACR,oBAAoB;IACpB,mBAAmB;IACnB,yBAAyB;IACzB,yBAAyB;IACzB,qBACE;IACF,wBAAwB;IACxB,wBACE;IACF,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClBC,SAAS;AACX;AAEA,MAAMC,kBAAkB;IACtBC,KAAK;IACLN,QAAQ;IACRI,SAAS;IACTG,YACE;AACJ;AAEA,MAAMC,mBAAmB;IACvBR,QAAQ;IACRS,WAAW;IACXL,SAAS;IACTM,UAAU;IACVC,MAAM;IACN,eAAe;IACf,eAAe;IACf,eAAe;IACf,kBAAkB;IAClBC,UAAU;IACV,sBAAsB;IACtB,yBAAyB;IACzB,uBAAuB;IACvB,wBAAwB;IACxB,oBAAoB;IACpB,2BAA2B;IAC3B,2BAA2B;IAC3B,2BAA2B;IAC3B,8BAA8B;AAChC;AAEA,OAAO,MAAMC,sBAAsB;IACjC;QACEC,MAAM;QACNC,SAAS;QACTC,QAAQ;YACNC,IAAI;YACJlB,MAAM;QACR;IACF;IACA;QACEe,MAAM;QACNC,SAAS;QACTC,QAAQ;YACNC,IAAI;YACJC,QAAQ;YACRnB,MAAM;YACNoB,YAAY;YACZC,cAAc;YACdC,YAAY;QACd;IACF;IACA;QACEP,MAAM;QACNC,SAAS;QACTC,QAAQ;YACNM,QAAQ;YACRC,OAAO;YACPC,SAAS;YACT,cAAc;YACdC,YAAY;YACZC,KAAK;YACLC,QAAQ;QACV;IACF;IACA;QACEb,MAAM;QACNC,SAAS;QACTa,WACE;IACJ;IACA;QACEd,MAAM;QACNC,SAAS;QACTa,WACE;IACJ;IACA;QACEd,MAAM;QACNC,SAAS;QACTC,QAAQ;YACNV,KAAK;YACLP,MAAM;QACR;IACF;IACA;QACEe,MAAM;QACNC,SAAS;QACTc,gBAAgB;QAChBb,QAAQnB;IACV;IACA;QACEiB,MAAM;QACNC,SAAS;QACTC,QAAQ;YACN,GAAGnB,eAAe;YAClBiC,QAAQ;QACV;IACF;IACA;QACEhB,MAAM;QACNC,SAAS;QACTa,WAAW;QACXC,gBAAgB;QAChBb,QAAQX;QACR0B,UAAU;YAAC;SAAa;IAC1B;IACA;QACEjB,MAAM;QACNC,SAAS;QACTc,gBAAgB;QAChBb,QAAQX;QACR0B,UAAU;YAAC;SAAa;IAC1B;IACA;QACEjB,MAAM;QACNC,SAAS;QACTa,WAAW;QACXC,gBAAgB;QAChBb,QAAQR;IACV;IACA;QACEM,MAAM;QACNC,SAAS;QACTC,QAAQ;YACNgB,SAAS;YACTC,UAAU;YACVC,SAAS;YACT,gBACE;YACF,oBAAoB;YACpBzB,WAAW;YACXT,QAAQ;YACRI,SAAS;QACX;QACA2B,UAAU;YAAC;SAAe;IAC5B;IACA;QACEjB,MAAM;QACNC,SAAS;QACTa,WACE;IACJ;IACA;QACEd,MAAM;QACNC,SAAS;QACTa,WACE;IACJ;CACD,CAAkD"}
|
|
1
|
+
{"version":3,"sources":["../../src/workflow-context/workflow-context-docs.ts"],"sourcesContent":["import type {WorkflowContextName, WorkflowContextReservedRoot} from './workflow-context.js';\n\n/**\n * Reader-facing descriptions for every context root and property.\n *\n * They live beside the type registry so a new field cannot ship undescribed:\n * the documentation generator renders types from the registry and looks up each\n * property here, and its check fails on a property with no description or a\n * description for a property that no longer exists.\n */\nexport interface WorkflowContextDoc {\n readonly root: WorkflowContextName | WorkflowContextReservedRoot;\n readonly summary: string;\n /** Why an open-shape root has no property table. */\n readonly shapeNote?: string;\n /** Prefix shown in the property column, such as `needs[*].`. */\n readonly propertyPrefix?: string;\n /** Description per property path, relative to the root. */\n readonly fields?: Readonly<Record<string, string>>;\n /** Paths whose element shape another root already documents. */\n readonly collapse?: readonly string[];\n}\n\nconst executionFields = {\n index: 'Position of the execution in its job, starting at zero.',\n name: 'Resolved execution name, or the job name when `execution_name` is not set.',\n status: 'Final status of the execution.',\n started_at: 'Time the execution started.',\n finished_at: 'Time the execution finished.',\n events: 'Listener events in the batch that started this execution. Empty for a standard job.',\n 'events[*].source': 'Integration connection slug that delivered the event.',\n 'events[*].event': 'Shipfox event name.',\n 'events[*].delivery_id': 'Identifier of the provider delivery.',\n 'events[*].received_at': 'Time Shipfox received the event.',\n 'events[*].project':\n 'Shipfox project resolved from the event repository. Null when there is none.',\n 'events[*].project.id': 'Identifier of the resolved project.',\n 'events[*].repository':\n 'Repository the event came from, as `owner/name`. Null when there is none.',\n 'events[*].ref': 'Git ref the event carried. Null when there is none.',\n 'events[*].commit': 'Commit SHA the event carried. Null when there is none.',\n 'events[*].data': 'Raw event payload. The provider owns its shape.',\n outputs: 'Outputs the execution produced, keyed by output name.',\n} as const;\n\nconst jobEntityFields = {\n key: 'Key of the job in the `jobs` map.',\n status: 'Final status of the job.',\n outputs: 'Declared job outputs, keyed by output name.',\n executions:\n 'Executions of the job, each with the properties of the `execution` context. A standard job has one.',\n} as const;\n\nconst stepEntityFields = {\n status: 'Final status of the step.',\n exit_code: 'Exit code of the most recent finished attempt.',\n outputs: 'Declared step outputs of the most recent finished attempt.',\n response: 'Final agent response. Absent on a run step.',\n gate: 'Gate result of the most recent finished attempt. Absent when the step has no gate.',\n 'gate.passed': 'Whether the gate expression passed.',\n 'gate.source': 'Gate expression that produced the result.',\n 'gate.reason': 'Why Shipfox could not check the gate.',\n 'gate.exit_code': 'Exit code the gate read.',\n attempts: 'Every finished attempt of the step, oldest first.',\n 'attempts[*].status': 'Final status of the attempt.',\n 'attempts[*].exit_code': 'Exit code the attempt reported.',\n 'attempts[*].outputs': 'Declared outputs the attempt reported.',\n 'attempts[*].response': 'Final agent response of the attempt. Absent on a run step.',\n 'attempts[*].gate': 'Gate result of the attempt. Absent when the step has no gate.',\n 'attempts[*].gate.passed': 'Whether the gate expression passed.',\n 'attempts[*].gate.source': 'Gate expression that produced the result.',\n 'attempts[*].gate.reason': 'Why Shipfox could not check the gate.',\n 'attempts[*].gate.exit_code': 'Exit code the gate read.',\n} as const;\n\nexport const workflowContextDocs = [\n {\n root: 'workflow',\n summary: 'The workflow definition this run came from.',\n fields: {\n id: 'Identifier of the workflow definition.',\n name: 'Workflow `name` from the definition.',\n },\n },\n {\n root: 'run',\n summary: 'The current run.',\n fields: {\n id: 'Identifier of the run.',\n number: 'Sequential run number within the workflow definition.',\n name: 'Resolved run name, or the workflow name when `run_name` is not set.',\n project_id: 'Identifier of the project that owns the run.',\n workspace_id: 'Identifier of the workspace that owns the run.',\n created_at: 'Time the run was created.',\n },\n },\n {\n root: 'trigger',\n summary: 'The trigger that started the run.',\n fields: {\n source: 'Integration connection slug, or `manual` or `cron`.',\n event: 'Shipfox event name that matched the trigger.',\n project: 'Shipfox project resolved from the event repository. Null when there is none.',\n 'project.id': 'Identifier of the resolved project.',\n repository: 'Repository the event came from, as `owner/name`. Null when there is none.',\n ref: 'Git ref the event carried. Null when there is none.',\n commit: 'Commit SHA the event carried. Null when there is none.',\n },\n },\n {\n root: 'event',\n summary: 'The raw payload of the event that started the run.',\n shapeNote:\n 'The provider owns this payload, so it has no fixed shape. Each provider page under [Integrations](/integrations) lists the events Shipfox delivers and links the payload each one carries.',\n },\n {\n root: 'inputs',\n summary: 'Values the trigger `with` block passed into the run.',\n shapeNote:\n 'The keys are the ones the trigger declares. See [trigger fields](/reference/workflow-schema#trigger-fields).',\n },\n {\n root: 'job',\n summary: 'The current job.',\n fields: {\n key: 'Key of the job in the `jobs` map.',\n name: 'Job `name`, or the job key when no name is set.',\n },\n },\n {\n root: 'executions',\n summary: 'Every execution of the current job.',\n propertyPrefix: 'executions[*].',\n fields: executionFields,\n },\n {\n root: 'execution',\n summary: 'The current execution of the job.',\n fields: {\n ...executionFields,\n failed: 'Whether an earlier step in this execution failed.',\n },\n },\n {\n root: 'jobs',\n summary: 'Upstream jobs, keyed by job key.',\n shapeNote: 'The keys are the job keys the workflow declares.',\n propertyPrefix: 'jobs.<job_key>.',\n fields: jobEntityFields,\n collapse: ['executions'],\n },\n {\n root: 'needs',\n summary: 'The jobs this job declares in `needs`.',\n propertyPrefix: 'needs[*].',\n fields: jobEntityFields,\n collapse: ['executions'],\n },\n {\n root: 'steps',\n summary: 'Earlier steps of the current job, keyed by step key.',\n shapeNote: 'The keys are the step keys the workflow declares.',\n propertyPrefix: 'steps.<step_key>.',\n fields: stepEntityFields,\n },\n {\n root: 'step',\n summary: 'The current step. Its properties depend on the field that reads it.',\n fields: {\n attempt: 'Attempt number of the step, starting at one. Not readable in `gate.success`.',\n is_retry: 'Whether this is a repeat attempt. Not readable in `gate.success`.',\n restart: 'Set when a gate restarted this step. Not readable in `gate.success`.',\n 'restart.from':\n 'The step whose gate restarted this attempt, with the properties of a `steps` entry. Not readable in `gate.success`.',\n 'restart.feedback': 'Feedback the restarting gate produced. Not readable in `gate.success`.',\n exit_code: 'Exit code the step reported. Readable in `gate.success` only.',\n status: 'Status the step reported. Readable in `gate.success` only.',\n outputs: 'Outputs the step reported. Readable in `gate.success` only.',\n },\n collapse: ['restart.from'],\n },\n {\n root: 'vars',\n summary: 'Workspace and project variables.',\n shapeNote:\n 'The keys are the variable names the workspace defines. See [Secrets and variables](/reference/secrets-variables).',\n },\n {\n root: 'secrets',\n summary: 'Workspace and project secrets.',\n shapeNote:\n 'The keys are the secret names the workspace defines. See [Secrets and variables](/reference/secrets-variables).',\n },\n {\n root: 'result',\n summary: 'The result returned by the current tool step.',\n shapeNote:\n 'The selected tool catalog defines this value. It is readable only while mapping tool outputs at step reporting.',\n },\n] as const satisfies readonly WorkflowContextDoc[];\n"],"names":["executionFields","index","name","status","started_at","finished_at","events","outputs","jobEntityFields","key","executions","stepEntityFields","exit_code","response","gate","attempts","workflowContextDocs","root","summary","fields","id","number","project_id","workspace_id","created_at","source","event","project","repository","ref","commit","shapeNote","propertyPrefix","failed","collapse","attempt","is_retry","restart"],"mappings":"AAuBA,MAAMA,kBAAkB;IACtBC,OAAO;IACPC,MAAM;IACNC,QAAQ;IACRC,YAAY;IACZC,aAAa;IACbC,QAAQ;IACR,oBAAoB;IACpB,mBAAmB;IACnB,yBAAyB;IACzB,yBAAyB;IACzB,qBACE;IACF,wBAAwB;IACxB,wBACE;IACF,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClBC,SAAS;AACX;AAEA,MAAMC,kBAAkB;IACtBC,KAAK;IACLN,QAAQ;IACRI,SAAS;IACTG,YACE;AACJ;AAEA,MAAMC,mBAAmB;IACvBR,QAAQ;IACRS,WAAW;IACXL,SAAS;IACTM,UAAU;IACVC,MAAM;IACN,eAAe;IACf,eAAe;IACf,eAAe;IACf,kBAAkB;IAClBC,UAAU;IACV,sBAAsB;IACtB,yBAAyB;IACzB,uBAAuB;IACvB,wBAAwB;IACxB,oBAAoB;IACpB,2BAA2B;IAC3B,2BAA2B;IAC3B,2BAA2B;IAC3B,8BAA8B;AAChC;AAEA,OAAO,MAAMC,sBAAsB;IACjC;QACEC,MAAM;QACNC,SAAS;QACTC,QAAQ;YACNC,IAAI;YACJlB,MAAM;QACR;IACF;IACA;QACEe,MAAM;QACNC,SAAS;QACTC,QAAQ;YACNC,IAAI;YACJC,QAAQ;YACRnB,MAAM;YACNoB,YAAY;YACZC,cAAc;YACdC,YAAY;QACd;IACF;IACA;QACEP,MAAM;QACNC,SAAS;QACTC,QAAQ;YACNM,QAAQ;YACRC,OAAO;YACPC,SAAS;YACT,cAAc;YACdC,YAAY;YACZC,KAAK;YACLC,QAAQ;QACV;IACF;IACA;QACEb,MAAM;QACNC,SAAS;QACTa,WACE;IACJ;IACA;QACEd,MAAM;QACNC,SAAS;QACTa,WACE;IACJ;IACA;QACEd,MAAM;QACNC,SAAS;QACTC,QAAQ;YACNV,KAAK;YACLP,MAAM;QACR;IACF;IACA;QACEe,MAAM;QACNC,SAAS;QACTc,gBAAgB;QAChBb,QAAQnB;IACV;IACA;QACEiB,MAAM;QACNC,SAAS;QACTC,QAAQ;YACN,GAAGnB,eAAe;YAClBiC,QAAQ;QACV;IACF;IACA;QACEhB,MAAM;QACNC,SAAS;QACTa,WAAW;QACXC,gBAAgB;QAChBb,QAAQX;QACR0B,UAAU;YAAC;SAAa;IAC1B;IACA;QACEjB,MAAM;QACNC,SAAS;QACTc,gBAAgB;QAChBb,QAAQX;QACR0B,UAAU;YAAC;SAAa;IAC1B;IACA;QACEjB,MAAM;QACNC,SAAS;QACTa,WAAW;QACXC,gBAAgB;QAChBb,QAAQR;IACV;IACA;QACEM,MAAM;QACNC,SAAS;QACTC,QAAQ;YACNgB,SAAS;YACTC,UAAU;YACVC,SAAS;YACT,gBACE;YACF,oBAAoB;YACpBzB,WAAW;YACXT,QAAQ;YACRI,SAAS;QACX;QACA2B,UAAU;YAAC;SAAe;IAC5B;IACA;QACEjB,MAAM;QACNC,SAAS;QACTa,WACE;IACJ;IACA;QACEd,MAAM;QACNC,SAAS;QACTa,WACE;IACJ;IACA;QACEd,MAAM;QACNC,SAAS;QACTa,WACE;IACJ;CACD,CAAkD"}
|
|
@@ -25,6 +25,10 @@ export declare const workflowContextReservedRoots: {
|
|
|
25
25
|
readonly runner: {
|
|
26
26
|
readonly host: 'runner';
|
|
27
27
|
};
|
|
28
|
+
readonly result: {
|
|
29
|
+
readonly host: 'server';
|
|
30
|
+
readonly availability: 'step-report';
|
|
31
|
+
};
|
|
28
32
|
};
|
|
29
33
|
export type WorkflowContextReservedRoot = keyof typeof workflowContextReservedRoots;
|
|
30
34
|
export type WorkflowContextShape = 'known' | 'open';
|
|
@@ -52,9 +56,31 @@ export interface RunnerWorkflowContextDefinition {
|
|
|
52
56
|
readonly literalKeyOnly?: boolean;
|
|
53
57
|
}
|
|
54
58
|
export type WorkflowContextDefinition = TypedWorkflowContextDefinition | OpenWorkflowContextDefinition | RunnerWorkflowContextDefinition;
|
|
59
|
+
/**
|
|
60
|
+
* Gate context for a tool step: `status` and `outputs`, with no `exit_code`
|
|
61
|
+
* because a tool step never reports one.
|
|
62
|
+
*/
|
|
63
|
+
export declare const toolStepReportTypeEnvironment: {
|
|
64
|
+
readonly step: {
|
|
65
|
+
readonly kind: 'object';
|
|
66
|
+
readonly fields: {
|
|
67
|
+
readonly status: 'string';
|
|
68
|
+
readonly outputs: {
|
|
69
|
+
readonly kind: 'map';
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
export type WorkflowStepKind = 'run' | 'agent' | 'checkout' | 'tool';
|
|
55
75
|
export interface WorkflowStepTypeOverlay {
|
|
56
76
|
readonly key: string;
|
|
77
|
+
readonly kind?: WorkflowStepKind;
|
|
57
78
|
readonly outputs?: OutputDeclarations;
|
|
79
|
+
/**
|
|
80
|
+
* Catalog output schema of a tool step. Types the implicit `result` output
|
|
81
|
+
* that every tool step exposes, merged with the inferred mapped outputs.
|
|
82
|
+
*/
|
|
83
|
+
readonly outputSchema?: unknown;
|
|
58
84
|
}
|
|
59
85
|
export interface WorkflowJobTypeOverlay {
|
|
60
86
|
readonly key: string;
|
|
@@ -194,8 +220,7 @@ export declare const workflowContextDefinitions: {
|
|
|
194
220
|
readonly delivery_id: 'string';
|
|
195
221
|
readonly received_at: 'timestamp';
|
|
196
222
|
readonly data: {
|
|
197
|
-
readonly kind: '
|
|
198
|
-
readonly fields: {};
|
|
223
|
+
readonly kind: 'map';
|
|
199
224
|
};
|
|
200
225
|
};
|
|
201
226
|
};
|
|
@@ -242,8 +267,7 @@ export declare const workflowContextDefinitions: {
|
|
|
242
267
|
readonly delivery_id: 'string';
|
|
243
268
|
readonly received_at: 'timestamp';
|
|
244
269
|
readonly data: {
|
|
245
|
-
readonly kind: '
|
|
246
|
-
readonly fields: {};
|
|
270
|
+
readonly kind: 'map';
|
|
247
271
|
};
|
|
248
272
|
};
|
|
249
273
|
};
|
|
@@ -369,7 +393,7 @@ export declare const workflowContextDefinitions: {
|
|
|
369
393
|
readonly literalKeyOnly: true;
|
|
370
394
|
};
|
|
371
395
|
};
|
|
372
|
-
export type WorkflowInterpolationField = 'run' | 'env.value' | 'agent.prompt' | 'agent.model' | 'agent.provider' | 'agent.thinking' | 'job.runner' | 'job.outputs' | 'workflow.run_name' | 'job.execution_name' | 'step.name' | 'step.working_directory' | 'step.feedback' | 'checkout.project' | 'checkout.connection' | 'checkout.repository' | 'checkout.ref' | 'checkout.path';
|
|
396
|
+
export type WorkflowInterpolationField = 'run' | 'env.value' | 'agent.prompt' | 'agent.model' | 'agent.provider' | 'agent.thinking' | 'job.runner' | 'job.outputs' | 'workflow.run_name' | 'job.execution_name' | 'step.name' | 'step.working_directory' | 'step.feedback' | 'checkout.project' | 'checkout.connection' | 'checkout.repository' | 'checkout.ref' | 'checkout.path' | 'tool.with' | 'tool.outputs';
|
|
373
397
|
export declare const workflowFieldFailurePolicies: readonly ['fail', 'degrade', 'fail-closed'];
|
|
374
398
|
export type WorkflowFieldFailurePolicy = (typeof workflowFieldFailurePolicies)[number];
|
|
375
399
|
export type WorkflowInterpolationFailurePolicy = Exclude<WorkflowFieldFailurePolicy, 'fail-closed'>;
|
|
@@ -381,6 +405,12 @@ export interface WorkflowInterpolationFieldPolicy {
|
|
|
381
405
|
readonly root: WorkflowContextName;
|
|
382
406
|
readonly key: string;
|
|
383
407
|
};
|
|
408
|
+
/**
|
|
409
|
+
* Explicit root enumeration for fields whose references are not just
|
|
410
|
+
* host-constrained, such as `tool.outputs` with its reserved `result` root.
|
|
411
|
+
* When present, callers should use this instead of the accepted-hosts filter.
|
|
412
|
+
*/
|
|
413
|
+
readonly roots?: readonly (WorkflowContextName | WorkflowContextReservedRoot)[];
|
|
384
414
|
}
|
|
385
415
|
export declare const workflowInterpolationFieldPolicies: Readonly<Record<WorkflowInterpolationField, WorkflowInterpolationFieldPolicy>>;
|
|
386
416
|
export declare const workflowInterpolationFields: readonly WorkflowInterpolationField[];
|
|
@@ -411,26 +441,29 @@ export declare function resolveContextRootHost(root: string): WorkflowContextHos
|
|
|
411
441
|
export declare function resolveContextRootAvailability(root: string): AvailabilitySite | undefined;
|
|
412
442
|
export declare function getWorkflowContextSensitivity(name: WorkflowContextName): WorkflowContextSensitivity;
|
|
413
443
|
export declare function rootsAvailableAt(site: AvailabilitySite): readonly WorkflowContextName[];
|
|
414
|
-
export declare function unavailableRootsAt(roots: readonly WorkflowContextName[], site: AvailabilitySite): readonly WorkflowContextName[];
|
|
444
|
+
export declare function unavailableRootsAt(roots: readonly (WorkflowContextName | WorkflowContextReservedRoot)[], site: AvailabilitySite): readonly (WorkflowContextName | WorkflowContextReservedRoot)[];
|
|
415
445
|
export declare function getWorkflowContextTypeEnvironment(name: WorkflowContextName): ExpressionTypeEnvironment | undefined;
|
|
446
|
+
export declare function getWorkflowInterpolationFieldTypeEnvironment(field: WorkflowInterpolationField, root: WorkflowContextName | WorkflowContextReservedRoot): ExpressionTypeEnvironment | undefined;
|
|
416
447
|
export declare function workflowInterpolationFieldAcceptsHost(field: WorkflowInterpolationField, host: WorkflowContextHost): boolean;
|
|
417
448
|
export declare function workflowContextRootRequiresLiteralKey(root: string): boolean;
|
|
418
449
|
export declare function getWorkflowInterpolationFieldFailurePolicy(field: WorkflowInterpolationField): WorkflowInterpolationFailurePolicy;
|
|
419
450
|
export declare function getWorkflowInterpolationFieldSelfReference(field: WorkflowInterpolationField): WorkflowInterpolationFieldPolicy['selfReference'];
|
|
420
451
|
export declare function getWorkflowInterpolationFieldMinimumFillTarget(field: WorkflowInterpolationField): AvailabilitySite | undefined;
|
|
421
452
|
export declare function getWorkflowPredicateFieldMinimumFillTarget(field: WorkflowPredicateField): AvailabilitySite;
|
|
422
|
-
export declare function getWorkflowPredicateFieldTypeEnvironment(field: WorkflowPredicateField, root: WorkflowContextName): ExpressionTypeEnvironment | undefined;
|
|
453
|
+
export declare function getWorkflowPredicateFieldTypeEnvironment(field: WorkflowPredicateField, root: WorkflowContextName, stepKind?: WorkflowStepKind): ExpressionTypeEnvironment | undefined;
|
|
423
454
|
export declare function getWorkflowPredicateContextRoots<Field extends WorkflowPredicateField>(field: Field): readonly WorkflowPredicateContextRoot<Field>[];
|
|
424
455
|
/**
|
|
425
456
|
* The roots a field can read, whichever kind of field it is.
|
|
426
457
|
*
|
|
427
458
|
* A predicate has an enumerated contract because the runtime assembles one
|
|
428
459
|
* context for it. A template has no single context: each reference is filled
|
|
429
|
-
* where its data arrives, so its
|
|
430
|
-
* resolve it
|
|
460
|
+
* where its data arrives, so its field-level constraint is which host can
|
|
461
|
+
* resolve it, except for fields that declare an explicit root list (such as
|
|
462
|
+
* `tool.outputs`, whose reserved `result` root is not a referenceable context
|
|
463
|
+
* name). Callers that document or check fields should use this instead of
|
|
431
464
|
* choosing a mechanism themselves.
|
|
432
465
|
*/
|
|
433
|
-
export declare function contextRootsForField(field: WorkflowPredicateField | WorkflowInterpolationField): readonly WorkflowContextName[];
|
|
466
|
+
export declare function contextRootsForField(field: WorkflowPredicateField | WorkflowInterpolationField): readonly (WorkflowContextName | WorkflowContextReservedRoot)[];
|
|
434
467
|
export declare function isWorkflowPredicateField(field: string): field is WorkflowPredicateField;
|
|
435
468
|
export declare function projectWorkflowPredicateContext(field: WorkflowPredicateField, context: WorkflowExpressionEvaluationContext): WorkflowExpressionEvaluationContext;
|
|
436
469
|
export interface WorkflowContextAvailabilityReferenceEntry {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-context.d.ts","sourceRoot":"","sources":["../../src/workflow-context/workflow-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mCAAmC,EAAC,MAAM,8CAA8C,CAAC;AACtG,OAAO,KAAK,EAAC,cAAc,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AACpG,OAAO,
|
|
1
|
+
{"version":3,"file":"workflow-context.d.ts","sourceRoot":"","sources":["../../src/workflow-context/workflow-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { outputDeclarationsToExpressionFields } from '../outputs/output-declarations.js';
|
|
1
|
+
import { jsonSchemaToExpressionType, outputDeclarationsToExpressionFields } from '../outputs/output-declarations.js';
|
|
2
2
|
export const workflowContextNames = [
|
|
3
3
|
'workflow',
|
|
4
4
|
'run',
|
|
@@ -49,6 +49,11 @@ export const workflowContextReservedRoots = {
|
|
|
49
49
|
},
|
|
50
50
|
runner: {
|
|
51
51
|
host: 'runner'
|
|
52
|
+
},
|
|
53
|
+
// The result of a tool step call; readable only from `tool.outputs` mappings.
|
|
54
|
+
result: {
|
|
55
|
+
host: 'server',
|
|
56
|
+
availability: 'step-report'
|
|
52
57
|
}
|
|
53
58
|
};
|
|
54
59
|
// `workflow` holds definition facts and `run` holds instance facts, mirroring
|
|
@@ -114,8 +119,7 @@ const executionEventType = {
|
|
|
114
119
|
received_at: 'timestamp',
|
|
115
120
|
...triggerReferenceFields,
|
|
116
121
|
data: {
|
|
117
|
-
kind: '
|
|
118
|
-
fields: {}
|
|
122
|
+
kind: 'map'
|
|
119
123
|
}
|
|
120
124
|
}
|
|
121
125
|
};
|
|
@@ -160,6 +164,14 @@ const stepGateType = {
|
|
|
160
164
|
exit_code: 'int'
|
|
161
165
|
}
|
|
162
166
|
};
|
|
167
|
+
const toolStepGateType = {
|
|
168
|
+
kind: 'object',
|
|
169
|
+
fields: {
|
|
170
|
+
passed: 'bool',
|
|
171
|
+
source: 'string',
|
|
172
|
+
reason: 'string'
|
|
173
|
+
}
|
|
174
|
+
};
|
|
163
175
|
const stepAttemptType = {
|
|
164
176
|
kind: 'object',
|
|
165
177
|
fields: {
|
|
@@ -210,6 +222,46 @@ const stepReportTypeEnvironment = {
|
|
|
210
222
|
}
|
|
211
223
|
}
|
|
212
224
|
};
|
|
225
|
+
/**
|
|
226
|
+
* Gate context for a tool step: `status` and `outputs`, with no `exit_code`
|
|
227
|
+
* because a tool step never reports one.
|
|
228
|
+
*/ export const toolStepReportTypeEnvironment = {
|
|
229
|
+
step: {
|
|
230
|
+
kind: 'object',
|
|
231
|
+
fields: {
|
|
232
|
+
status: 'string',
|
|
233
|
+
outputs: {
|
|
234
|
+
kind: 'map'
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
// A tool step never reports an exit code: the call outcome is the attempt
|
|
240
|
+
// status, and the gate context of a tool step reads `status` and `outputs` only.
|
|
241
|
+
const toolStepAttemptType = {
|
|
242
|
+
kind: 'object',
|
|
243
|
+
fields: {
|
|
244
|
+
status: 'string',
|
|
245
|
+
outputs: {
|
|
246
|
+
kind: 'map'
|
|
247
|
+
},
|
|
248
|
+
response: 'string',
|
|
249
|
+
gate: toolStepGateType
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
// The self root of a tool step drops `exit_code` from the shared step fields.
|
|
253
|
+
const toolStepSelfTypeEnvironment = {
|
|
254
|
+
step: {
|
|
255
|
+
kind: 'object',
|
|
256
|
+
fields: {
|
|
257
|
+
...stepDispatchTypeEnvironment.step.fields,
|
|
258
|
+
status: 'string',
|
|
259
|
+
outputs: {
|
|
260
|
+
kind: 'map'
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
};
|
|
213
265
|
const stepTypeEnvironment = {
|
|
214
266
|
step: {
|
|
215
267
|
kind: 'object',
|
|
@@ -446,6 +498,20 @@ export const workflowInterpolationFieldPolicies = {
|
|
|
446
498
|
'checkout.path': {
|
|
447
499
|
acceptedHosts: serverOnlyHosts,
|
|
448
500
|
failurePolicy: 'fail'
|
|
501
|
+
},
|
|
502
|
+
'tool.with': {
|
|
503
|
+
acceptedHosts: serverOnlyHosts,
|
|
504
|
+
failurePolicy: 'fail',
|
|
505
|
+
minimumFillTarget: 'step-dispatch'
|
|
506
|
+
},
|
|
507
|
+
'tool.outputs': {
|
|
508
|
+
acceptedHosts: serverOnlyHosts,
|
|
509
|
+
failurePolicy: 'fail',
|
|
510
|
+
minimumFillTarget: 'step-report',
|
|
511
|
+
roots: [
|
|
512
|
+
'result',
|
|
513
|
+
'vars'
|
|
514
|
+
]
|
|
449
515
|
}
|
|
450
516
|
};
|
|
451
517
|
export const workflowInterpolationFields = Object.keys(workflowInterpolationFieldPolicies);
|
|
@@ -557,13 +623,21 @@ export function rootsAvailableAt(site) {
|
|
|
557
623
|
});
|
|
558
624
|
}
|
|
559
625
|
export function unavailableRootsAt(roots, site) {
|
|
560
|
-
const
|
|
561
|
-
return roots.filter((root)
|
|
626
|
+
const targetSiteIndex = availabilitySites.indexOf(site);
|
|
627
|
+
return roots.filter((root)=>{
|
|
628
|
+
const availability = resolveContextRootAvailability(root);
|
|
629
|
+
return availability === undefined || availabilitySites.indexOf(availability) > targetSiteIndex;
|
|
630
|
+
});
|
|
562
631
|
}
|
|
563
632
|
export function getWorkflowContextTypeEnvironment(name) {
|
|
564
633
|
const context = getWorkflowContextDefinition(name);
|
|
565
634
|
return context.shape === 'known' ? context.typeEnvironment : undefined;
|
|
566
635
|
}
|
|
636
|
+
export function getWorkflowInterpolationFieldTypeEnvironment(field, root) {
|
|
637
|
+
if (field === 'tool.with' && root === 'step') return stepDispatchTypeEnvironment;
|
|
638
|
+
if (!isWorkflowContextName(root)) return undefined;
|
|
639
|
+
return getWorkflowContextTypeEnvironment(root);
|
|
640
|
+
}
|
|
567
641
|
export function workflowInterpolationFieldAcceptsHost(field, host) {
|
|
568
642
|
return workflowInterpolationFieldPolicies[field].acceptedHosts.includes(host);
|
|
569
643
|
}
|
|
@@ -585,8 +659,9 @@ export function getWorkflowInterpolationFieldMinimumFillTarget(field) {
|
|
|
585
659
|
export function getWorkflowPredicateFieldMinimumFillTarget(field) {
|
|
586
660
|
return workflowPredicateFieldMinimumFillTargets[field];
|
|
587
661
|
}
|
|
588
|
-
export function getWorkflowPredicateFieldTypeEnvironment(field, root) {
|
|
589
|
-
const
|
|
662
|
+
export function getWorkflowPredicateFieldTypeEnvironment(field, root, stepKind) {
|
|
663
|
+
const fieldTypeEnvironment = field === 'step.success' && stepKind === 'tool' ? toolStepReportTypeEnvironment : workflowPredicateFieldTypeEnvironments[field];
|
|
664
|
+
const typeEnvironment = fieldTypeEnvironment;
|
|
590
665
|
if (typeEnvironment === undefined) return getWorkflowContextTypeEnvironment(root);
|
|
591
666
|
const rootType = typeEnvironment[root];
|
|
592
667
|
return rootType === undefined ? getWorkflowContextTypeEnvironment(root) : {
|
|
@@ -601,12 +676,16 @@ export function getWorkflowPredicateContextRoots(field) {
|
|
|
601
676
|
*
|
|
602
677
|
* A predicate has an enumerated contract because the runtime assembles one
|
|
603
678
|
* context for it. A template has no single context: each reference is filled
|
|
604
|
-
* where its data arrives, so its
|
|
605
|
-
* resolve it
|
|
679
|
+
* where its data arrives, so its field-level constraint is which host can
|
|
680
|
+
* resolve it, except for fields that declare an explicit root list (such as
|
|
681
|
+
* `tool.outputs`, whose reserved `result` root is not a referenceable context
|
|
682
|
+
* name). Callers that document or check fields should use this instead of
|
|
606
683
|
* choosing a mechanism themselves.
|
|
607
684
|
*/ export function contextRootsForField(field) {
|
|
608
685
|
if (isWorkflowPredicateField(field)) return workflowPredicateContextRoots[field];
|
|
609
|
-
const
|
|
686
|
+
const policy = workflowInterpolationFieldPolicies[field];
|
|
687
|
+
if (policy.roots !== undefined) return policy.roots;
|
|
688
|
+
const { acceptedHosts } = policy;
|
|
610
689
|
return workflowContextNames.filter((name)=>acceptedHosts.includes(workflowContextDefinitions[name].host));
|
|
611
690
|
}
|
|
612
691
|
export function isWorkflowPredicateField(field) {
|
|
@@ -665,7 +744,7 @@ function stepsRootType(steps) {
|
|
|
665
744
|
};
|
|
666
745
|
}
|
|
667
746
|
function stepEntityTypeForStep(step) {
|
|
668
|
-
const attemptType = stepAttemptTypeForOutputs(outputsTypeForStep(step));
|
|
747
|
+
const attemptType = stepAttemptTypeForOutputs(outputsTypeForStep(step), step.kind === 'tool');
|
|
669
748
|
return {
|
|
670
749
|
kind: 'object',
|
|
671
750
|
fields: {
|
|
@@ -678,24 +757,39 @@ function stepEntityTypeForStep(step) {
|
|
|
678
757
|
};
|
|
679
758
|
}
|
|
680
759
|
function selfStepType(step) {
|
|
760
|
+
const selfType = step.kind === 'tool' ? toolStepSelfTypeEnvironment : stepTypeEnvironment;
|
|
681
761
|
return {
|
|
682
762
|
kind: 'object',
|
|
683
763
|
fields: {
|
|
684
|
-
...
|
|
764
|
+
...selfType.step.fields,
|
|
685
765
|
outputs: outputsTypeForStep(step)
|
|
686
766
|
}
|
|
687
767
|
};
|
|
688
768
|
}
|
|
689
|
-
function stepAttemptTypeForOutputs(outputs) {
|
|
769
|
+
function stepAttemptTypeForOutputs(outputs, toolStep) {
|
|
690
770
|
return {
|
|
691
771
|
kind: 'object',
|
|
692
772
|
fields: {
|
|
693
|
-
...stepAttemptType.fields,
|
|
773
|
+
...(toolStep ? toolStepAttemptType : stepAttemptType).fields,
|
|
694
774
|
outputs
|
|
695
775
|
}
|
|
696
776
|
};
|
|
697
777
|
}
|
|
698
778
|
function outputsTypeForStep(step) {
|
|
779
|
+
if (step.kind === 'tool') {
|
|
780
|
+
// Every tool step exposes `outputs.result`, typed from the catalog output
|
|
781
|
+
// schema when one is declared and open otherwise; `result` always wins
|
|
782
|
+
// over a mapped output that tries to redeclare it.
|
|
783
|
+
return {
|
|
784
|
+
kind: 'object',
|
|
785
|
+
fields: {
|
|
786
|
+
...step.outputs === undefined ? {} : outputDeclarationsToExpressionFields(step.outputs),
|
|
787
|
+
result: step.outputSchema === undefined ? {
|
|
788
|
+
kind: 'map'
|
|
789
|
+
} : jsonSchemaToExpressionType(step.outputSchema)
|
|
790
|
+
}
|
|
791
|
+
};
|
|
792
|
+
}
|
|
699
793
|
if (step.outputs === undefined) return {
|
|
700
794
|
kind: 'map'
|
|
701
795
|
};
|