@agimon-ai/po-workflow 0.0.0-alpha.7 → 0.0.0-alpha.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +149 -29
- package/README.md +152 -17
- package/dist/RecoverWorkflowService-BR0yn0LH.cjs +11549 -0
- package/dist/RecoverWorkflowService-BR0yn0LH.cjs.map +1 -0
- package/dist/RecoverWorkflowService-D6vX8d1Q.mjs +11300 -0
- package/dist/RecoverWorkflowService-D6vX8d1Q.mjs.map +1 -0
- package/dist/apiContracts.cjs +115 -19
- package/dist/apiContracts.cjs.map +1 -1
- package/dist/apiContracts.d.mts.map +1 -1
- package/dist/apiContracts.mjs +115 -19
- package/dist/apiContracts.mjs.map +1 -1
- package/dist/cli.cjs +1145 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +1146 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/extensions/native.mjs +2294 -641
- package/dist/extensions/native.mjs.map +1 -1
- package/dist/extensions/server.cjs +7056 -3192
- package/dist/extensions/server.cjs.map +1 -1
- package/dist/extensions/server.d.mts +2 -2
- package/dist/extensions/server.d.mts.map +1 -1
- package/dist/extensions/server.mjs +7041 -3154
- package/dist/extensions/server.mjs.map +1 -1
- package/dist/extensions/web.mjs +3485 -2454
- package/dist/extensions/web.mjs.map +1 -1
- package/dist/index.cjs +3 -1
- package/dist/index.d.mts +68 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -1
- package/dist/rolldown-runtime-VH7oDXx4.cjs +28 -0
- package/dist/workflowCommandTemplate-r57z3b46.mjs +79 -0
- package/dist/workflowCommandTemplate-r57z3b46.mjs.map +1 -0
- package/dist/workflowCommandTemplate-w6rOCJpw.cjs +102 -0
- package/dist/workflowCommandTemplate-w6rOCJpw.cjs.map +1 -0
- package/dist/{workflowLaunchCommand-GGqimmTC.mjs → workflowLaunchCommand-7WRoiOKJ.mjs} +5 -3
- package/dist/workflowLaunchCommand-7WRoiOKJ.mjs.map +1 -0
- package/dist/{workflowLaunchCommand-C69Nn3k5.cjs → workflowLaunchCommand-C7anFsDH.cjs} +5 -3
- package/dist/workflowLaunchCommand-C7anFsDH.cjs.map +1 -0
- package/llms.txt +6 -7
- package/package.json +41 -22
- package/src/prompts/codemode-how-to-workflow/SKILL.md +127 -0
- package/src/prompts/help-how-to-workflow/SKILL.md +127 -0
- package/src/types/webWorkflows.ts +5 -1
- package/LICENSE.web +0 -29
- package/dist/workflowLaunchCommand-C69Nn3k5.cjs.map +0 -1
- package/dist/workflowLaunchCommand-GGqimmTC.mjs.map +0 -1
- package/skills/workflow-recovery/SKILL.md +0 -85
- package/src/prompts/po-author-workflow/SKILL.md +0 -64
- package/src/prompts/po-use-workflow/SKILL.md +0 -21
package/LICENSE
CHANGED
|
@@ -1,29 +1,149 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
License text copyright © 2017 MariaDB Corporation Ab, All Rights Reserved.
|
|
2
|
+
"Business Source License" is a trademark of MariaDB Corporation Ab.
|
|
3
|
+
|
|
4
|
+
Parameters
|
|
5
|
+
|
|
6
|
+
Licensor: Agimon Pty Ltd
|
|
7
|
+
Licensed Work: Po, the software in the Po source repository and the
|
|
8
|
+
packages released from it, in each version released by
|
|
9
|
+
the Licensor.
|
|
10
|
+
The Licensed Work is (c) 2026 Agimon Pty Ltd.
|
|
11
|
+
Material identified as third-party in the "Third-party
|
|
12
|
+
components" section at the end of this file or in a
|
|
13
|
+
NOTICE file, and any package or directory whose own
|
|
14
|
+
license file grants a different license, is not part of
|
|
15
|
+
the Licensed Work and remains under its own license.
|
|
16
|
+
Additional Use Grant: You may make production use of the Licensed Work if
|
|
17
|
+
your use is Eligible Use. "Eligible Use" is production use that falls
|
|
18
|
+
within at least one of the following:
|
|
19
|
+
|
|
20
|
+
(a) Personal Use. Use by an individual for their own personal purposes,
|
|
21
|
+
and not on behalf of, or for the benefit of, an employer, client, or
|
|
22
|
+
other Organization. Use by an individual in the course of employment
|
|
23
|
+
or engagement by an Organization is use by that Organization.
|
|
24
|
+
|
|
25
|
+
(b) Small Organization Use. Use by or on behalf of an Organization whose
|
|
26
|
+
Annual Revenue is less than USD 1,000,000.
|
|
27
|
+
|
|
28
|
+
(c) Non-profit, Education and Research Use. Use, regardless of Annual
|
|
29
|
+
Revenue, by (i) an Organization registered or recognized as a
|
|
30
|
+
non-profit or charitable organization under the laws of its
|
|
31
|
+
jurisdiction, for its non-profit purposes; (ii) an accredited school,
|
|
32
|
+
college, or university, for teaching, learning, or academic research;
|
|
33
|
+
or (iii) a publicly funded research institution, for its research.
|
|
34
|
+
|
|
35
|
+
(d) Service Provider Use. Use by a consultant, contractor, agency, or other
|
|
36
|
+
service provider, regardless of its own Annual Revenue, solely to
|
|
37
|
+
build, deploy, host, operate, or support the Licensed Work for a client
|
|
38
|
+
whose own use would be Eligible Use under (a), (b), or (c). A service
|
|
39
|
+
provider's use for its own purposes is Eligible Use only if the service
|
|
40
|
+
provider itself qualifies under (b) or (c).
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
Hosted services. Offering the Licensed Work to third parties as a hosted
|
|
44
|
+
or managed service whose primary value is the Licensed Work is Eligible
|
|
45
|
+
Use only if each such third party's own use would be Eligible Use.
|
|
46
|
+
|
|
47
|
+
Definitions. "Organization" means any company, partnership, sole
|
|
48
|
+
proprietorship, trust, association, government body, or other entity, and
|
|
49
|
+
includes an individual acting in a business or professional capacity.
|
|
50
|
+
"Affiliate" means any entity that directly or indirectly controls, is
|
|
51
|
+
controlled by, or is under common control with an Organization, where
|
|
52
|
+
"control" means ownership of more than 50% of the voting interests of an
|
|
53
|
+
entity or the power to direct its management and policies by contract or
|
|
54
|
+
otherwise. "Annual Revenue" means the total gross revenue of an
|
|
55
|
+
Organization and all of its Affiliates combined, from all sources and
|
|
56
|
+
whether or not related to the Licensed Work, for its most recently
|
|
57
|
+
completed fiscal year, or, if it has not completed a fiscal year, for the
|
|
58
|
+
twelve months before the use (or since its formation, if shorter),
|
|
59
|
+
converted into US dollars at the average exchange rate for that period.
|
|
60
|
+
Proceeds of equity or debt financing are not revenue.
|
|
61
|
+
|
|
62
|
+
Threshold. If an Organization stops qualifying under (b), its existing
|
|
63
|
+
production use remains Eligible Use for 90 days after it stops
|
|
64
|
+
qualifying, after which it must obtain a commercial license or stop
|
|
65
|
+
production use. Use that was Eligible Use when it occurred never requires
|
|
66
|
+
a commercial license after the fact.
|
|
67
|
+
Change Date: Four years from the date a version of the Licensed Work
|
|
68
|
+
is first publicly released by the Licensor.
|
|
69
|
+
Change License: Apache License, Version 2.0
|
|
70
|
+
|
|
71
|
+
For information about alternative licensing arrangements for the Licensed
|
|
72
|
+
Work, please visit: https://agimon.ai/licensing
|
|
73
|
+
|
|
74
|
+
Notice
|
|
75
|
+
|
|
76
|
+
The Business Source License (this document, or the "License") is not an Open
|
|
77
|
+
Source license. However, the Licensed Work will eventually be made available
|
|
78
|
+
under an Open Source License, as stated in this License.
|
|
79
|
+
|
|
80
|
+
-----------------------------------------------------------------------------
|
|
81
|
+
|
|
82
|
+
Business Source License 1.1
|
|
83
|
+
|
|
84
|
+
Terms
|
|
85
|
+
|
|
86
|
+
The Licensor hereby grants you the right to copy, modify, create derivative
|
|
87
|
+
works, redistribute, and make non-production use of the Licensed Work. The
|
|
88
|
+
Licensor may make an Additional Use Grant, above, permitting limited
|
|
89
|
+
production use.
|
|
90
|
+
|
|
91
|
+
Effective on the Change Date, or the fourth anniversary of the first publicly
|
|
92
|
+
available distribution of a specific version of the Licensed Work under this
|
|
93
|
+
License, whichever comes first, the Licensor hereby grants you rights under
|
|
94
|
+
the terms of the Change License, and the rights granted in the paragraph
|
|
95
|
+
above terminate.
|
|
96
|
+
|
|
97
|
+
If your use of the Licensed Work does not comply with the requirements
|
|
98
|
+
currently in effect as described in this License, you must purchase a
|
|
99
|
+
commercial license from the Licensor, its affiliated entities, or authorized
|
|
100
|
+
resellers, or you must refrain from using the Licensed Work.
|
|
101
|
+
|
|
102
|
+
All copies of the original and modified Licensed Work, and derivative works
|
|
103
|
+
of the Licensed Work, are subject to this License. This License applies
|
|
104
|
+
separately for each version of the Licensed Work and the Change Date may vary
|
|
105
|
+
for each version of the Licensed Work released by Licensor.
|
|
106
|
+
|
|
107
|
+
You must conspicuously display this License on each original or modified copy
|
|
108
|
+
of the Licensed Work. If you receive the Licensed Work in original or
|
|
109
|
+
modified form from a third party, the terms and conditions set forth in this
|
|
110
|
+
License apply to your use of that work.
|
|
111
|
+
|
|
112
|
+
Any use of the Licensed Work in violation of this License will automatically
|
|
113
|
+
terminate your rights under this License for the current and all other
|
|
114
|
+
versions of the Licensed Work.
|
|
115
|
+
|
|
116
|
+
This License does not grant you any right in any trademark or logo of
|
|
117
|
+
Licensor or its affiliates (provided that you may use a trademark or logo of
|
|
118
|
+
Licensor as expressly required by this License).
|
|
119
|
+
|
|
120
|
+
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
|
|
121
|
+
AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
|
|
122
|
+
EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
|
|
123
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
|
|
124
|
+
TITLE.
|
|
125
|
+
|
|
126
|
+
MariaDB hereby grants you permission to use this License’s text to license
|
|
127
|
+
your works, and to refer to it using the trademark “Business Source License”,
|
|
128
|
+
as long as you comply with the Covenants of Licensor below.
|
|
129
|
+
|
|
130
|
+
Covenants of Licensor
|
|
131
|
+
|
|
132
|
+
In consideration of the right to use this License’s text and the “Business
|
|
133
|
+
Source License” name and trademark, Licensor covenants to MariaDB, and to all
|
|
134
|
+
other recipients of the licensed work to be provided by Licensor:
|
|
135
|
+
|
|
136
|
+
1. To specify as the Change License the GPL Version 2.0 or any later version,
|
|
137
|
+
or a license that is compatible with GPL Version 2.0 or a later version,
|
|
138
|
+
where “compatible” means that software provided under the Change License can
|
|
139
|
+
be included in a program with software provided under GPL Version 2.0 or a
|
|
140
|
+
later version. Licensor may specify additional Change Licenses without
|
|
141
|
+
limitation.
|
|
142
|
+
|
|
143
|
+
2. To either: (a) specify an additional grant of rights to use that does not
|
|
144
|
+
impose any additional restriction on the right granted in this License, as
|
|
145
|
+
the Additional Use Grant; or (b) insert the text “None”.
|
|
146
|
+
|
|
147
|
+
3. To specify a Change Date.
|
|
148
|
+
|
|
149
|
+
4. Not to modify this License in any other way.
|
package/README.md
CHANGED
|
@@ -4,8 +4,8 @@ Discover, launch, monitor, control, and recover asynchronous Po workflows.
|
|
|
4
4
|
|
|
5
5
|
Part of the [Po distribution](https://www.npmjs.com/package/@agimon-ai/po).
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
host-executed steps, while Po provides session-scoped tools.
|
|
7
|
+
This package owns the workflow engine and the `workflow-mcp` CLI (`po-workflow-mcp` is an alias).
|
|
8
|
+
Workflow files describe job dependencies and host-executed steps, while Po provides session-scoped tools.
|
|
9
9
|
|
|
10
10
|
> **Alpha:** workflow and recovery contracts may change between releases.
|
|
11
11
|
|
|
@@ -15,8 +15,8 @@ host-executed steps, while Po provides session-scoped tools.
|
|
|
15
15
|
|
|
16
16
|
## Install
|
|
17
17
|
|
|
18
|
-
The seeded `modes.yaml` selects
|
|
19
|
-
|
|
18
|
+
The seeded `modes.yaml` selects the `workflow` layer in `minimal`, `copilot` and `examples`.
|
|
19
|
+
Remove it from a mode to omit Workflow there. No minor-mode activation is required.
|
|
20
20
|
|
|
21
21
|
## Define a workflow
|
|
22
22
|
|
|
@@ -49,6 +49,116 @@ needs, and `run` and `interactiveRun` steps each get their own RMUX pane. Each r
|
|
|
49
49
|
log in `engine.log` in its run directory. See `docs/automation.md` for the full contract and the
|
|
50
50
|
CLI fallback.
|
|
51
51
|
|
|
52
|
+
## Job-specific tools
|
|
53
|
+
|
|
54
|
+
Managed Po agent steps can receive a workflow-owned `jobTools` code-mode namespace and a pinned
|
|
55
|
+
`workflow-job-tools` skill. Select a folder at workflow level as a default, or override it per job:
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
name: summarize
|
|
59
|
+
runConfig:
|
|
60
|
+
majorMode: copilot
|
|
61
|
+
tools: ./tools/shared
|
|
62
|
+
jobs:
|
|
63
|
+
report:
|
|
64
|
+
tools: ./tools/report
|
|
65
|
+
steps:
|
|
66
|
+
- name: Summarize
|
|
67
|
+
customRun: Read workflow-job-tools, discover jobTools, then summarize this job.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The folder must contain JavaScript `index.mjs` and a non-empty `SKILL.md`. Paths are resolved relative
|
|
71
|
+
to the YAML that declares them, before imports and job-template inheritance. Empty paths, control
|
|
72
|
+
characters and URL specifiers are rejected. Parsing, listing and inspection never execute the module.
|
|
73
|
+
A job's main steps, `preJob` and `postJob` use its selection or the workflow default. `repair.tools`
|
|
74
|
+
overrides the default for repair triage. Global phases use the workflow default.
|
|
75
|
+
|
|
76
|
+
Only trusted, managed Po `customRun` and in-process `interactiveRun` agent sessions receive these
|
|
77
|
+
tools, not shell steps, ordinary sessions, or external Claude/Codex CLI runners. Each session uses its
|
|
78
|
+
captured workflow config. Global `pre` can run before the worktree YAML is reparsed, so its tools are
|
|
79
|
+
not necessarily selected from that worktree. Step `cwd`, `WORKTREE_PATH` and environment variables do
|
|
80
|
+
not select or resolve the tools folder.
|
|
81
|
+
|
|
82
|
+
`index.mjs` default-exports a factory, called once per managed session with:
|
|
83
|
+
|
|
84
|
+
- `sessionId` and the admitted working directory `cwd`.
|
|
85
|
+
- `workflow`: the trusted `PoWorkflowContextService`, including the captured config, job/step identity,
|
|
86
|
+
admitted `jobEnvironment` and `stepEnvironment`, and workflow state reader.
|
|
87
|
+
- Injected `fs` and `shell` capabilities. Their methods take a call context as the last argument.
|
|
88
|
+
- `signal`: the session tools lifetime, aborted on session disposal or mounting failure.
|
|
89
|
+
- `context`: a call context for `fs` and `shell`, aborted with `signal`. Inside `bind(run)`, pass
|
|
90
|
+
`run.context` instead, which also aborts when that exec ends.
|
|
91
|
+
|
|
92
|
+
Return the existing `PoCodemodeNamespace` contract: name `jobTools`, a non-empty one-line `summary`
|
|
93
|
+
(maximum 600 characters), TypeScript `declarations` for discovery, and `bind(run)`. Bind returns flat
|
|
94
|
+
named async methods with JSON arguments and results. Each exec gets a fresh binding; keep per-session
|
|
95
|
+
state inside the factory, not at module scope. Validate method inputs and honour `run.signal` in long
|
|
96
|
+
operations. Use `run.onDispose` for exec-owned cleanup. The host refuses foreign sessions and calls
|
|
97
|
+
after cancellation/disposal, and detaches JSON values in both directions. Return `null`, not
|
|
98
|
+
`undefined`, for no output.
|
|
99
|
+
|
|
100
|
+
A minimal runnable `tools/report/index.mjs`:
|
|
101
|
+
|
|
102
|
+
```js
|
|
103
|
+
export default function createJobTools({ sessionId, workflow, signal }) {
|
|
104
|
+
signal.throwIfAborted();
|
|
105
|
+
return {
|
|
106
|
+
name: 'jobTools',
|
|
107
|
+
summary: 'Describe the current workflow job with a supplied label.',
|
|
108
|
+
declarations: `declare const jobTools: {
|
|
109
|
+
describe(input: { label: string }): Promise<{ job: string; label: string }>;
|
|
110
|
+
};`,
|
|
111
|
+
bind(run) {
|
|
112
|
+
if (run.sessionId !== sessionId) throw new Error('Wrong session.');
|
|
113
|
+
return {
|
|
114
|
+
async describe(input) {
|
|
115
|
+
run.signal.throwIfAborted();
|
|
116
|
+
if (!input || typeof input.label !== 'string' || !input.label.trim())
|
|
117
|
+
throw new Error('label must be a non-empty string.');
|
|
118
|
+
return { job: workflow.job, label: input.label.trim() };
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Corresponding `tools/report/SKILL.md`:
|
|
127
|
+
|
|
128
|
+
```md
|
|
129
|
+
# Report tools
|
|
130
|
+
|
|
131
|
+
Use jobTools.describe to label the current job before writing its summary.
|
|
132
|
+
Discover jobTools for the current signature, then call it through exec.
|
|
133
|
+
Do not guess a label or repeat an effect after cancellation without checking its outcome.
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Agents read the pinned skill, call `discover({ namespace: 'jobTools' })`, then use
|
|
137
|
+
`exec` with `return await jobTools.describe({ label: 'Verification' });`. Keep guidance in `SKILL.md`
|
|
138
|
+
and signatures in `declarations`. Optional namespace `approval` policies are preserved and enforced
|
|
139
|
+
by the existing code-mode approval path; each policy must name a returned method. An approval request
|
|
140
|
+
is not permission to bypass the normal approval flow.
|
|
141
|
+
|
|
142
|
+
Tools are trusted workflow code running with the host's privileges, not sandboxed code. Review the
|
|
143
|
+
folder before launching. Native import caches modules by file URL; editing `index.mjs` at the same
|
|
144
|
+
path requires a host restart. There is no direct TypeScript loading, hot reload, or external CLI
|
|
145
|
+
bridge. A missing file or invalid factory fails the managed step session rather than silently
|
|
146
|
+
omitting its selected tools. The namespace and skill mount and dispose together; disposing them does
|
|
147
|
+
not stop the owning workflow or change its recovery rules.
|
|
148
|
+
|
|
149
|
+
## Step instructions
|
|
150
|
+
|
|
151
|
+
A workflow can give its managed Po agent steps their own instructions file:
|
|
152
|
+
|
|
153
|
+
```yaml
|
|
154
|
+
instructions: ./AGENTS.md
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
The file replaces the AGENTS.md files the step session would discover from its working directory; it
|
|
158
|
+
does not add to them. The path resolves relative to the declaring YAML and is inherited through
|
|
159
|
+
`imports` as a default, like `tools`. A missing or unreadable file fails the step session rather than
|
|
160
|
+
running it without instructions. Shell steps and external Claude/Codex CLI runners ignore it.
|
|
161
|
+
|
|
52
162
|
## Launch and monitor
|
|
53
163
|
|
|
54
164
|
Core tools are:
|
|
@@ -61,6 +171,20 @@ Core tools are:
|
|
|
61
171
|
Launch returns after the run is registered, not after all jobs complete. Use status for progress
|
|
62
172
|
and wait for a completion notification.
|
|
63
173
|
|
|
174
|
+
## Dynamic workflows
|
|
175
|
+
|
|
176
|
+
The package also supplies the `dynamicWorkflow` code-mode namespace: tracked Mastra
|
|
177
|
+
workflows composed with `then`, `parallel`, `branch` and bounded `foreach`, with live
|
|
178
|
+
`team.run` transcripts. It is available when the `workflow` layer is selected, with no
|
|
179
|
+
minor-mode gate. Inside a YAML run, a `customRun` step's agent can use it
|
|
180
|
+
for fan-out whose shape is only known at run time, and the run view shows those runs under
|
|
181
|
+
that step. See the [code-mode guide](src/prompts/codemode-how-to-workflow/SKILL.md).
|
|
182
|
+
Tracker state is in memory per session; it is not persisted with the run record.
|
|
183
|
+
|
|
184
|
+
Select the `workflow` layer in `modes.yaml`. Existing default-package entries still work
|
|
185
|
+
and deduplicate with the layer. No configuration migration runs, and persisted
|
|
186
|
+
`minorModes: [workflow]` has no effect.
|
|
187
|
+
|
|
64
188
|
## Storage, concurrency, and lifecycle
|
|
65
189
|
|
|
66
190
|
Registry data defaults to `$HOME/.workflow-mcp`; set `WORKFLOW_MCP_HOME` to relocate it. Persisted
|
|
@@ -84,16 +208,16 @@ adopts the eligible failure, validates the evidence, and transfers ownership to
|
|
|
84
208
|
Live controls remain scoped to the owning session. Recovery does not launch a second copy beside a
|
|
85
209
|
still-running job and does not guarantee that parent-session work survives shutdown.
|
|
86
210
|
|
|
87
|
-
The package
|
|
88
|
-
|
|
89
|
-
|
|
211
|
+
The package ships two skills: pinned, ungated `codemode-how-to-workflow` for workflow code-mode
|
|
212
|
+
namespaces and selected job tools, and unpinned, Help-gated `help-how-to-workflow` for authoring and
|
|
213
|
+
maintenance. A selected tools folder also supplies the managed session's pinned `workflow-job-tools` skill.
|
|
90
214
|
|
|
91
215
|
## Workflow sessions
|
|
92
216
|
|
|
93
217
|
In a server (web cockpit) session, a launch does not run in the session that asked for it. The
|
|
94
218
|
session creates a child **workflow session** (provenance `workflow-session`), nested under it in the
|
|
95
|
-
rail, and hands it the launch. The workflow session owns the run (`
|
|
96
|
-
sessions,
|
|
219
|
+
rail, and hands it the launch. The workflow session owns the run (`PO_SESSION_ID`), runs its step
|
|
220
|
+
sessions, so its agent can troubleshoot and recover the run without a workflow minor mode. The run's
|
|
97
221
|
environment also carries `PO_WORKFLOW_LAUNCHER_SESSION_ID`, naming the launching session, which
|
|
98
222
|
lists the run in its Activity group, is told when it ends, and may read its status.
|
|
99
223
|
|
|
@@ -127,20 +251,31 @@ dialog in the overlay slot, the Activity group's run rows (a handed-off run open
|
|
|
127
251
|
session), their stores, and the `workflow_runs` session channel, compiled into the cockpit bundle
|
|
128
252
|
by `po-web`'s build. Each surface keeps its components in a colocated `_components` folder and
|
|
129
253
|
its stores and helpers in `_lib`.
|
|
130
|
-
The hub-side data source
|
|
131
|
-
(run.json plus progress.ndjson) exactly as the engine writes it.
|
|
132
|
-
|
|
254
|
+
The hub-side data source lives in the package's backend API and reads the workflow registry
|
|
255
|
+
(run.json plus progress.ndjson) exactly as the engine writes it. The `poServer` and `poWeb`
|
|
256
|
+
blocks in package.json declare the backend and browser contributions.
|
|
257
|
+
|
|
258
|
+
## Upgrading from the separate engine
|
|
259
|
+
|
|
260
|
+
The engine now ships inside `@agimon-ai/po-workflow`. Both `workflow-mcp` and
|
|
261
|
+
`po-workflow-mcp` invoke that package's CLI. Storage paths and registry records are unchanged.
|
|
262
|
+
|
|
263
|
+
Let active runs finish before replacing an installation, or retain their exact old Node and CLI
|
|
264
|
+
payloads until they finish. A run-local `bin/workflow-mcp` launcher contains absolute paths to the
|
|
265
|
+
engine that created it. Never rewrite a live launcher or hot-swap its engine.
|
|
266
|
+
|
|
267
|
+
In repositories with canonical `.po/hooks.yaml`, replace the old package's CLI path with
|
|
268
|
+
`node_modules/@agimon-ai/po-workflow/dist/cli.mjs`, then regenerate the frontend settings with that
|
|
269
|
+
repository's hook emitter. Installation alone does not migrate existing hook registries.
|
|
133
270
|
|
|
134
271
|
## License
|
|
135
272
|
|
|
136
|
-
|
|
137
|
-
`_components` and `_lib` modules colocated with one), which is source available under the Po
|
|
138
|
-
Web License (see `LICENSE.web`): free to use, including commercially, but not to redistribute.
|
|
273
|
+
Business Source License 1.1: free for personal use, organisations under USD 1M revenue, non-profits and education. See [LICENSE](LICENSE) and https://agimon.ai/licensing.
|
|
139
274
|
|
|
140
275
|
## Native execution contract
|
|
141
276
|
|
|
142
|
-
Agent steps require an effective `runConfig.majorMode`; delegated workflows require top-level `runConfig.majorMode` before their owner child is created. Selection projects major mode, minor modes, profile and domains
|
|
277
|
+
Agent steps require an effective `runConfig.majorMode`; delegated workflows require top-level `runConfig.majorMode` before their owner child is created. Selection projects major mode, minor modes, profile and domains unchanged. `subagentModel` and `subagentThinking` set Team preferences independently of the step model.
|
|
143
278
|
|
|
144
|
-
The native host requires execution-state inspection before creating agent steps. After settlement it waits for idle, no pending messages and a known background snapshot without core holds or holding-provider errors before checking decisions. Unknown ownership waits closed without consuming reminders; stops interrupt reads and retry delays.
|
|
279
|
+
The native host requires execution-state inspection before creating agent steps. After settlement it waits for idle, no pending messages and a known background snapshot without core holds or holding-provider errors before checking decisions. Unknown ownership waits closed without consuming reminders; stops interrupt reads and retry delays. Running commands stop holding an inline step after five idle minutes, but its decision gate still runs before session release.
|
|
145
280
|
|
|
146
281
|
Delegated successes are informational. Errors wake the workflow owner through durable custom-message admission; the launcher gets an error notification, not an agent-waking failure completion. Diagnosis stays local. Recovery, pause, resume and stop are request-driven. User-requested stops do not trigger diagnosis or automatic restart.
|