@agimon-ai/po-workflow 0.0.0-alpha.11 → 0.0.0-alpha.111

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.
Files changed (50) hide show
  1. package/LICENSE +149 -29
  2. package/README.md +152 -17
  3. package/dist/RecoverWorkflowService-2WMhxaZd.cjs +13595 -0
  4. package/dist/RecoverWorkflowService-2WMhxaZd.cjs.map +1 -0
  5. package/dist/RecoverWorkflowService-ByQ8rI7w.mjs +13280 -0
  6. package/dist/RecoverWorkflowService-ByQ8rI7w.mjs.map +1 -0
  7. package/dist/apiContracts.cjs +197 -35
  8. package/dist/apiContracts.cjs.map +1 -1
  9. package/dist/apiContracts.d.mts.map +1 -1
  10. package/dist/apiContracts.mjs +197 -35
  11. package/dist/apiContracts.mjs.map +1 -1
  12. package/dist/cli.cjs +1145 -0
  13. package/dist/cli.cjs.map +1 -0
  14. package/dist/cli.d.mts +1 -0
  15. package/dist/cli.mjs +1146 -0
  16. package/dist/cli.mjs.map +1 -0
  17. package/dist/extensions/native.mjs +3754 -686
  18. package/dist/extensions/native.mjs.map +1 -1
  19. package/dist/extensions/server.cjs +7430 -2829
  20. package/dist/extensions/server.cjs.map +1 -1
  21. package/dist/extensions/server.d.mts +2 -2
  22. package/dist/extensions/server.d.mts.map +1 -1
  23. package/dist/extensions/server.mjs +7499 -2875
  24. package/dist/extensions/server.mjs.map +1 -1
  25. package/dist/extensions/web.mjs +4448 -2829
  26. package/dist/extensions/web.mjs.map +1 -1
  27. package/dist/index.cjs +3 -1
  28. package/dist/index.d.mts +68 -2
  29. package/dist/index.d.mts.map +1 -1
  30. package/dist/index.mjs +3 -1
  31. package/dist/rolldown-runtime-VH7oDXx4.cjs +28 -0
  32. package/dist/workflowCommandTemplate-r57z3b46.mjs +79 -0
  33. package/dist/workflowCommandTemplate-r57z3b46.mjs.map +1 -0
  34. package/dist/workflowCommandTemplate-w6rOCJpw.cjs +102 -0
  35. package/dist/workflowCommandTemplate-w6rOCJpw.cjs.map +1 -0
  36. package/dist/{workflowLaunchCommand-GGqimmTC.mjs → workflowLaunchCommand-CRLvhQre.mjs} +9 -3
  37. package/dist/workflowLaunchCommand-CRLvhQre.mjs.map +1 -0
  38. package/dist/{workflowLaunchCommand-C69Nn3k5.cjs → workflowLaunchCommand-Yf3Zq0VR.cjs} +9 -3
  39. package/dist/workflowLaunchCommand-Yf3Zq0VR.cjs.map +1 -0
  40. package/llms.txt +8 -7
  41. package/package.json +105 -25
  42. package/src/prompts/codemode-how-to-workflow/SKILL.md +174 -0
  43. package/src/prompts/help-how-to-workflow/SKILL.md +174 -0
  44. package/src/types/webWorkflows.ts +31 -1
  45. package/LICENSE.web +0 -29
  46. package/dist/workflowLaunchCommand-C69Nn3k5.cjs.map +0 -1
  47. package/dist/workflowLaunchCommand-GGqimmTC.mjs.map +0 -1
  48. package/skills/workflow-recovery/SKILL.md +0 -85
  49. package/src/prompts/po-author-workflow/SKILL.md +0 -64
  50. package/src/prompts/po-use-workflow/SKILL.md +0 -21
package/LICENSE CHANGED
@@ -1,29 +1,149 @@
1
- Portions of this software are licensed as follows:
2
-
3
- * The browser half of this package, meaning every ".web" routed file under
4
- "src/extensions" and the "_components" and "_lib" modules colocated with
5
- one, is licensed under the Po Web License defined in "LICENSE.web":
6
- free to use, not to redistribute.
7
- * All other content is licensed under the MIT license below.
8
-
9
- MIT License
10
-
11
- Copyright (c) 2026 Vuong Ngo
12
-
13
- Permission is hereby granted, free of charge, to any person obtaining a copy
14
- of this software and associated documentation files (the "Software"), to deal
15
- in the Software without restriction, including without limitation the rights
16
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17
- copies of the Software, and to permit persons to whom the Software is
18
- furnished to do so, subject to the following conditions:
19
-
20
- The above copyright notice and this permission notice shall be included in all
21
- copies or substantial portions of the Software.
22
-
23
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
- SOFTWARE.
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
- The integration embeds `@agimon-ai/workflow-mcp`. Workflow files describe job dependencies and
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 Workflow in `default.packages`. Keep it there or select it through
19
- a layer; its tools remain inactive until Workflow mode is enabled.
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 publishes `workflow-recovery`, `po-author-workflow` for writing workflow
88
- definitions, and `po-use-workflow` for launching, monitoring, and recovering runs while Workflow
89
- mode is active. Deactivating Workflow mode hides them; cached files may remain.
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 (`PI_SESSION_ID`), runs its step
96
- sessions, and has Workflow mode on, so its agent can troubleshoot and recover the run. The run's
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 ships behind the `./web-hub` subpath and reads the workflow registry
131
- (run.json plus progress.ndjson) exactly as the engine writes it. Both halves are declared by the
132
- `poWeb` block in package.json.
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
- MIT, except this package's browser half (the `.web` routed files under `src/extensions` and the
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, adding the workflow minor mode once. `subagentModel` and `subagentThinking` set Team preferences independently of the step model.
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.