@shipfox/api-workflows-dto 2.0.0 → 6.0.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +20 -0
- package/dist/inter-module.d.ts +154 -0
- package/dist/inter-module.d.ts.map +1 -0
- package/dist/inter-module.js +131 -0
- package/dist/inter-module.js.map +1 -0
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +16 -20
- package/src/inter-module.test.ts +87 -0
- package/src/inter-module.ts +116 -0
- package/tsconfig.build.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
$ shipfox-swc
|
|
2
|
-
Successfully compiled:
|
|
2
|
+
Successfully compiled: 14 files with swc (475.24ms)
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @shipfox/api-workflows-dto
|
|
2
2
|
|
|
3
|
+
## 6.0.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 23563de: Moves Triggers to the injected Workflows inter-module contract with stable run idempotency and listener delivery commands.
|
|
8
|
+
- 23a4dc2: Moves Logs and Integrations to injected Workflows inter-module clients with minimal log and leased agent-tool queries.
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Updated dependencies [0bb82a4]
|
|
13
|
+
- Updated dependencies [81f9544]
|
|
14
|
+
- @shipfox/api-agent-dto@6.0.0
|
|
15
|
+
- @shipfox/inter-module@0.2.0
|
|
16
|
+
|
|
17
|
+
## 5.0.0
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- bb037af: Resolves workspace packages from source during development while published consumers continue to use compiled output.
|
|
22
|
+
|
|
3
23
|
## 2.0.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { type InterModuleClient } from '@shipfox/inter-module';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
/**
|
|
4
|
+
* Producer-owned Workflows commands used by synchronous callers. Commands carry
|
|
5
|
+
* stable identities whenever a retry could create a duplicate run.
|
|
6
|
+
*/
|
|
7
|
+
export declare const workflowsInterModuleContract: import("@shipfox/inter-module").InterModuleContract<{
|
|
8
|
+
readonly module: "workflows";
|
|
9
|
+
readonly methods: {
|
|
10
|
+
readonly startRunFromTrigger: {
|
|
11
|
+
readonly input: z.ZodObject<{
|
|
12
|
+
workspaceId: z.ZodString;
|
|
13
|
+
projectId: z.ZodString;
|
|
14
|
+
definitionId: z.ZodString;
|
|
15
|
+
triggerPayload: z.ZodUnion<readonly [z.ZodObject<{
|
|
16
|
+
provider: z.ZodOptional<z.ZodLiteral<"manual">>;
|
|
17
|
+
source: z.ZodLiteral<"manual">;
|
|
18
|
+
event: z.ZodLiteral<"fire">;
|
|
19
|
+
subscriptionId: z.ZodString;
|
|
20
|
+
userId: z.ZodString;
|
|
21
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
22
|
+
provider: z.ZodOptional<z.ZodLiteral<"cron">>;
|
|
23
|
+
source: z.ZodLiteral<"cron">;
|
|
24
|
+
event: z.ZodLiteral<"tick">;
|
|
25
|
+
scheduleId: z.ZodString;
|
|
26
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
27
|
+
provider: z.ZodString;
|
|
28
|
+
source: z.ZodString;
|
|
29
|
+
event: z.ZodString;
|
|
30
|
+
deliveryId: z.ZodString;
|
|
31
|
+
data: z.ZodUnknown;
|
|
32
|
+
}, z.core.$strip>]>;
|
|
33
|
+
inputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
34
|
+
idempotencyKey: z.ZodString;
|
|
35
|
+
}, z.core.$strip>;
|
|
36
|
+
readonly output: z.ZodObject<{
|
|
37
|
+
id: z.ZodString;
|
|
38
|
+
name: z.ZodString;
|
|
39
|
+
}, z.core.$strip>;
|
|
40
|
+
readonly errors: {
|
|
41
|
+
readonly 'definition-not-found': z.ZodObject<{
|
|
42
|
+
definitionId: z.ZodString;
|
|
43
|
+
}, z.core.$strip>;
|
|
44
|
+
readonly 'project-mismatch': z.ZodObject<{}, z.core.$strip>;
|
|
45
|
+
readonly 'agent-config-unresolvable': z.ZodObject<{
|
|
46
|
+
definitionId: z.ZodString;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
readonly 'agent-integration-materialization-failed': z.ZodObject<{}, z.core.$strip>;
|
|
49
|
+
readonly 'interpolation-unresolvable': z.ZodObject<{
|
|
50
|
+
definitionId: z.ZodString;
|
|
51
|
+
field: z.ZodEnum<{
|
|
52
|
+
run: "run";
|
|
53
|
+
env: "env";
|
|
54
|
+
"agent.prompt": "agent.prompt";
|
|
55
|
+
"agent.model": "agent.model";
|
|
56
|
+
"agent.provider": "agent.provider";
|
|
57
|
+
"job.runner": "job.runner";
|
|
58
|
+
"job.outputs": "job.outputs";
|
|
59
|
+
"job.name": "job.name";
|
|
60
|
+
"step.name": "step.name";
|
|
61
|
+
"step.feedback": "step.feedback";
|
|
62
|
+
}>;
|
|
63
|
+
source: z.ZodString;
|
|
64
|
+
envKey: z.ZodOptional<z.ZodString>;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
readonly 'invalid-job-runner-labels': z.ZodObject<{
|
|
67
|
+
labels: z.ZodArray<z.ZodString>;
|
|
68
|
+
}, z.core.$strip>;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
readonly deliverEventToJobListener: {
|
|
72
|
+
readonly input: z.ZodObject<{
|
|
73
|
+
jobId: z.ZodString;
|
|
74
|
+
disposition: z.ZodEnum<{
|
|
75
|
+
fire: "fire";
|
|
76
|
+
resolve: "resolve";
|
|
77
|
+
}>;
|
|
78
|
+
eventRef: z.ZodString;
|
|
79
|
+
deliveryId: z.ZodString;
|
|
80
|
+
source: z.ZodString;
|
|
81
|
+
event: z.ZodString;
|
|
82
|
+
provider: z.ZodString;
|
|
83
|
+
payload: z.ZodUnknown;
|
|
84
|
+
receivedAt: z.ZodString;
|
|
85
|
+
}, z.core.$strip>;
|
|
86
|
+
readonly output: z.ZodObject<{
|
|
87
|
+
buffered: z.ZodBoolean;
|
|
88
|
+
skipped: z.ZodBoolean;
|
|
89
|
+
}, z.core.$strip>;
|
|
90
|
+
};
|
|
91
|
+
readonly getStepLogContext: {
|
|
92
|
+
readonly input: z.ZodObject<{
|
|
93
|
+
stepId: z.ZodString;
|
|
94
|
+
}, z.core.$strip>;
|
|
95
|
+
readonly output: z.ZodObject<{
|
|
96
|
+
harness: z.ZodEnum<{
|
|
97
|
+
pi: "pi";
|
|
98
|
+
claude: "claude";
|
|
99
|
+
}>;
|
|
100
|
+
}, z.core.$strip>;
|
|
101
|
+
};
|
|
102
|
+
readonly getLeasedAgentToolContext: {
|
|
103
|
+
readonly input: z.ZodObject<{
|
|
104
|
+
jobId: z.ZodString;
|
|
105
|
+
jobExecutionId: z.ZodString;
|
|
106
|
+
runnerSessionId: z.ZodString;
|
|
107
|
+
stepId: z.ZodString;
|
|
108
|
+
attempt: z.ZodNumber;
|
|
109
|
+
}, z.core.$strip>;
|
|
110
|
+
readonly output: z.ZodObject<{
|
|
111
|
+
workspaceId: z.ZodString;
|
|
112
|
+
integrations: z.ZodArray<z.ZodObject<{
|
|
113
|
+
connectionId: z.ZodString;
|
|
114
|
+
connectionSlug: z.ZodString;
|
|
115
|
+
provider: z.ZodString;
|
|
116
|
+
requiredScope: z.ZodArray<z.ZodUnknown>;
|
|
117
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
118
|
+
id: z.ZodString;
|
|
119
|
+
sensitivity: z.ZodEnum<{
|
|
120
|
+
read: "read";
|
|
121
|
+
write: "write";
|
|
122
|
+
}>;
|
|
123
|
+
sensitive: z.ZodBoolean;
|
|
124
|
+
requiredScope: z.ZodArray<z.ZodUnknown>;
|
|
125
|
+
inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
126
|
+
outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
127
|
+
methods: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
128
|
+
id: z.ZodString;
|
|
129
|
+
token: z.ZodString;
|
|
130
|
+
description: z.ZodOptional<z.ZodString>;
|
|
131
|
+
sensitivity: z.ZodEnum<{
|
|
132
|
+
read: "read";
|
|
133
|
+
write: "write";
|
|
134
|
+
}>;
|
|
135
|
+
sensitive: z.ZodBoolean;
|
|
136
|
+
requiredScope: z.ZodArray<z.ZodUnknown>;
|
|
137
|
+
}, z.core.$strict>>>;
|
|
138
|
+
}, z.core.$strict>>;
|
|
139
|
+
}, z.core.$strict>>;
|
|
140
|
+
}, z.core.$strip>;
|
|
141
|
+
readonly errors: {
|
|
142
|
+
readonly 'lease-not-active': z.ZodObject<{}, z.core.$strip>;
|
|
143
|
+
readonly 'step-not-found': z.ZodObject<{}, z.core.$strip>;
|
|
144
|
+
readonly 'job-not-found': z.ZodObject<{}, z.core.$strip>;
|
|
145
|
+
readonly 'step-attempt-mismatch': z.ZodObject<{}, z.core.$strip>;
|
|
146
|
+
readonly 'step-not-running': z.ZodObject<{}, z.core.$strip>;
|
|
147
|
+
readonly 'leased-step-not-agent': z.ZodObject<{}, z.core.$strip>;
|
|
148
|
+
readonly 'agent-step-config-invalid': z.ZodObject<{}, z.core.$strip>;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
}>;
|
|
153
|
+
export type WorkflowsModuleClient = InterModuleClient<typeof workflowsInterModuleContract>;
|
|
154
|
+
//# sourceMappingURL=inter-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inter-module.d.ts","sourceRoot":"","sources":["../src/inter-module.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAuCtB;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoEvC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { harnessSchema, materializedAgentIntegrationSchema } from '@shipfox/api-agent-dto';
|
|
2
|
+
import { defineInterModuleContract } from '@shipfox/inter-module';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
const idSchema = z.string().uuid();
|
|
5
|
+
const triggerPayloadSchema = z.union([
|
|
6
|
+
z.object({
|
|
7
|
+
provider: z.literal('manual').optional(),
|
|
8
|
+
source: z.literal('manual'),
|
|
9
|
+
event: z.literal('fire'),
|
|
10
|
+
subscriptionId: idSchema,
|
|
11
|
+
userId: idSchema
|
|
12
|
+
}),
|
|
13
|
+
z.object({
|
|
14
|
+
provider: z.literal('cron').optional(),
|
|
15
|
+
source: z.literal('cron'),
|
|
16
|
+
event: z.literal('tick'),
|
|
17
|
+
scheduleId: idSchema
|
|
18
|
+
}),
|
|
19
|
+
z.object({
|
|
20
|
+
provider: z.string(),
|
|
21
|
+
source: z.string(),
|
|
22
|
+
event: z.string(),
|
|
23
|
+
deliveryId: z.string(),
|
|
24
|
+
data: z.unknown()
|
|
25
|
+
})
|
|
26
|
+
]);
|
|
27
|
+
const interpolationFieldSchema = z.enum([
|
|
28
|
+
'run',
|
|
29
|
+
'env',
|
|
30
|
+
'agent.prompt',
|
|
31
|
+
'agent.model',
|
|
32
|
+
'agent.provider',
|
|
33
|
+
'job.runner',
|
|
34
|
+
'job.outputs',
|
|
35
|
+
'job.name',
|
|
36
|
+
'step.name',
|
|
37
|
+
'step.feedback'
|
|
38
|
+
]);
|
|
39
|
+
/**
|
|
40
|
+
* Producer-owned Workflows commands used by synchronous callers. Commands carry
|
|
41
|
+
* stable identities whenever a retry could create a duplicate run.
|
|
42
|
+
*/ export const workflowsInterModuleContract = defineInterModuleContract({
|
|
43
|
+
module: 'workflows',
|
|
44
|
+
methods: {
|
|
45
|
+
startRunFromTrigger: {
|
|
46
|
+
input: z.object({
|
|
47
|
+
workspaceId: idSchema,
|
|
48
|
+
projectId: idSchema,
|
|
49
|
+
definitionId: idSchema,
|
|
50
|
+
triggerPayload: triggerPayloadSchema,
|
|
51
|
+
inputs: z.record(z.string(), z.unknown()).optional(),
|
|
52
|
+
idempotencyKey: z.string().min(1)
|
|
53
|
+
}),
|
|
54
|
+
output: z.object({
|
|
55
|
+
id: idSchema,
|
|
56
|
+
name: z.string()
|
|
57
|
+
}),
|
|
58
|
+
errors: {
|
|
59
|
+
'definition-not-found': z.object({
|
|
60
|
+
definitionId: idSchema
|
|
61
|
+
}),
|
|
62
|
+
'project-mismatch': z.object({}),
|
|
63
|
+
'agent-config-unresolvable': z.object({
|
|
64
|
+
definitionId: idSchema
|
|
65
|
+
}),
|
|
66
|
+
'agent-integration-materialization-failed': z.object({}),
|
|
67
|
+
'interpolation-unresolvable': z.object({
|
|
68
|
+
definitionId: idSchema,
|
|
69
|
+
field: interpolationFieldSchema,
|
|
70
|
+
source: z.string(),
|
|
71
|
+
envKey: z.string().optional()
|
|
72
|
+
}),
|
|
73
|
+
'invalid-job-runner-labels': z.object({
|
|
74
|
+
labels: z.array(z.string())
|
|
75
|
+
})
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
deliverEventToJobListener: {
|
|
79
|
+
input: z.object({
|
|
80
|
+
jobId: idSchema,
|
|
81
|
+
disposition: z.enum([
|
|
82
|
+
'fire',
|
|
83
|
+
'resolve'
|
|
84
|
+
]),
|
|
85
|
+
eventRef: z.string().min(1),
|
|
86
|
+
deliveryId: z.string().min(1),
|
|
87
|
+
source: z.string().min(1),
|
|
88
|
+
event: z.string().min(1),
|
|
89
|
+
provider: z.string().min(1),
|
|
90
|
+
payload: z.unknown(),
|
|
91
|
+
receivedAt: z.string().datetime()
|
|
92
|
+
}),
|
|
93
|
+
output: z.object({
|
|
94
|
+
buffered: z.boolean(),
|
|
95
|
+
skipped: z.boolean()
|
|
96
|
+
})
|
|
97
|
+
},
|
|
98
|
+
getStepLogContext: {
|
|
99
|
+
input: z.object({
|
|
100
|
+
stepId: idSchema
|
|
101
|
+
}),
|
|
102
|
+
output: z.object({
|
|
103
|
+
harness: harnessSchema
|
|
104
|
+
})
|
|
105
|
+
},
|
|
106
|
+
getLeasedAgentToolContext: {
|
|
107
|
+
input: z.object({
|
|
108
|
+
jobId: idSchema,
|
|
109
|
+
jobExecutionId: idSchema,
|
|
110
|
+
runnerSessionId: idSchema,
|
|
111
|
+
stepId: idSchema,
|
|
112
|
+
attempt: z.number().int().positive()
|
|
113
|
+
}),
|
|
114
|
+
output: z.object({
|
|
115
|
+
workspaceId: idSchema,
|
|
116
|
+
integrations: z.array(materializedAgentIntegrationSchema)
|
|
117
|
+
}),
|
|
118
|
+
errors: {
|
|
119
|
+
'lease-not-active': z.object({}),
|
|
120
|
+
'step-not-found': z.object({}),
|
|
121
|
+
'job-not-found': z.object({}),
|
|
122
|
+
'step-attempt-mismatch': z.object({}),
|
|
123
|
+
'step-not-running': z.object({}),
|
|
124
|
+
'leased-step-not-agent': z.object({}),
|
|
125
|
+
'agent-step-config-invalid': z.object({})
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=inter-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/inter-module.ts"],"sourcesContent":["import {harnessSchema, materializedAgentIntegrationSchema} from '@shipfox/api-agent-dto';\nimport {defineInterModuleContract, type InterModuleClient} from '@shipfox/inter-module';\nimport {z} from 'zod';\n\nconst idSchema = z.string().uuid();\nconst triggerPayloadSchema = z.union([\n z.object({\n provider: z.literal('manual').optional(),\n source: z.literal('manual'),\n event: z.literal('fire'),\n subscriptionId: idSchema,\n userId: idSchema,\n }),\n z.object({\n provider: z.literal('cron').optional(),\n source: z.literal('cron'),\n event: z.literal('tick'),\n scheduleId: idSchema,\n }),\n z.object({\n provider: z.string(),\n source: z.string(),\n event: z.string(),\n deliveryId: z.string(),\n data: z.unknown(),\n }),\n]);\n\nconst interpolationFieldSchema = z.enum([\n 'run',\n 'env',\n 'agent.prompt',\n 'agent.model',\n 'agent.provider',\n 'job.runner',\n 'job.outputs',\n 'job.name',\n 'step.name',\n 'step.feedback',\n]);\n\n/**\n * Producer-owned Workflows commands used by synchronous callers. Commands carry\n * stable identities whenever a retry could create a duplicate run.\n */\nexport const workflowsInterModuleContract = defineInterModuleContract({\n module: 'workflows',\n methods: {\n startRunFromTrigger: {\n input: z.object({\n workspaceId: idSchema,\n projectId: idSchema,\n definitionId: idSchema,\n triggerPayload: triggerPayloadSchema,\n inputs: z.record(z.string(), z.unknown()).optional(),\n idempotencyKey: z.string().min(1),\n }),\n output: z.object({id: idSchema, name: z.string()}),\n errors: {\n 'definition-not-found': z.object({definitionId: idSchema}),\n 'project-mismatch': z.object({}),\n 'agent-config-unresolvable': z.object({definitionId: idSchema}),\n 'agent-integration-materialization-failed': z.object({}),\n 'interpolation-unresolvable': z.object({\n definitionId: idSchema,\n field: interpolationFieldSchema,\n source: z.string(),\n envKey: z.string().optional(),\n }),\n 'invalid-job-runner-labels': z.object({labels: z.array(z.string())}),\n },\n },\n deliverEventToJobListener: {\n input: z.object({\n jobId: idSchema,\n disposition: z.enum(['fire', 'resolve']),\n eventRef: z.string().min(1),\n deliveryId: z.string().min(1),\n source: z.string().min(1),\n event: z.string().min(1),\n provider: z.string().min(1),\n payload: z.unknown(),\n receivedAt: z.string().datetime(),\n }),\n output: z.object({buffered: z.boolean(), skipped: z.boolean()}),\n },\n getStepLogContext: {\n input: z.object({stepId: idSchema}),\n output: z.object({harness: harnessSchema}),\n },\n getLeasedAgentToolContext: {\n input: z.object({\n jobId: idSchema,\n jobExecutionId: idSchema,\n runnerSessionId: idSchema,\n stepId: idSchema,\n attempt: z.number().int().positive(),\n }),\n output: z.object({\n workspaceId: idSchema,\n integrations: z.array(materializedAgentIntegrationSchema),\n }),\n errors: {\n 'lease-not-active': z.object({}),\n 'step-not-found': z.object({}),\n 'job-not-found': z.object({}),\n 'step-attempt-mismatch': z.object({}),\n 'step-not-running': z.object({}),\n 'leased-step-not-agent': z.object({}),\n 'agent-step-config-invalid': z.object({}),\n },\n },\n },\n});\n\nexport type WorkflowsModuleClient = InterModuleClient<typeof workflowsInterModuleContract>;\n"],"names":["harnessSchema","materializedAgentIntegrationSchema","defineInterModuleContract","z","idSchema","string","uuid","triggerPayloadSchema","union","object","provider","literal","optional","source","event","subscriptionId","userId","scheduleId","deliveryId","data","unknown","interpolationFieldSchema","enum","workflowsInterModuleContract","module","methods","startRunFromTrigger","input","workspaceId","projectId","definitionId","triggerPayload","inputs","record","idempotencyKey","min","output","id","name","errors","field","envKey","labels","array","deliverEventToJobListener","jobId","disposition","eventRef","payload","receivedAt","datetime","buffered","boolean","skipped","getStepLogContext","stepId","harness","getLeasedAgentToolContext","jobExecutionId","runnerSessionId","attempt","number","int","positive","integrations"],"mappings":"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"}
|