@skaile/workspaces 2.3.0 → 2.4.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.
Files changed (197) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +32 -13
  3. package/dist/{asset-feeds-DKNYRLED.js → asset-feeds-4AWAT5PW.js} +6 -6
  4. package/dist/{asset-feeds-DKNYRLED.js.map → asset-feeds-4AWAT5PW.js.map} +1 -1
  5. package/dist/asset-manager/catalog-deployer.js +1 -1
  6. package/dist/asset-manager/index.js +5 -5
  7. package/dist/asset-manager/installer.js +2 -2
  8. package/dist/bridge/drivers/claude-sdk.js +2 -2
  9. package/dist/bridge/drivers/codex.js +1 -1
  10. package/dist/bridge/drivers/continue.js +2 -2
  11. package/dist/bridge/drivers/echo.js +1 -1
  12. package/dist/bridge/drivers/gemini.js +3 -3
  13. package/dist/bridge/drivers/goose.js +2 -2
  14. package/dist/bridge/drivers/omp.js +1 -1
  15. package/dist/bridge/drivers/opencode.js +2 -2
  16. package/dist/bridge/drivers/qwen.js +3 -3
  17. package/dist/bridge/index.js +2 -2
  18. package/dist/{chunk-CERGXDGG.js → chunk-2OCYS5EP.js} +3 -3
  19. package/dist/{chunk-CERGXDGG.js.map → chunk-2OCYS5EP.js.map} +1 -1
  20. package/dist/{chunk-TAJBFYCT.js → chunk-2QVPCZTL.js} +81 -35
  21. package/dist/chunk-2QVPCZTL.js.map +1 -0
  22. package/dist/{chunk-W3Q37HEF.js → chunk-3HVASHBF.js} +3 -3
  23. package/dist/{chunk-W3Q37HEF.js.map → chunk-3HVASHBF.js.map} +1 -1
  24. package/dist/{chunk-UQ3RJKDD.js → chunk-4O2RAXKJ.js} +179 -52
  25. package/dist/chunk-4O2RAXKJ.js.map +1 -0
  26. package/dist/{chunk-DZM33LQO.js → chunk-4QROZZ5Z.js} +15 -3
  27. package/dist/chunk-4QROZZ5Z.js.map +1 -0
  28. package/dist/{chunk-G2ILW47R.js → chunk-57RFYEVM.js} +3 -3
  29. package/dist/{chunk-G2ILW47R.js.map → chunk-57RFYEVM.js.map} +1 -1
  30. package/dist/{chunk-LD6YGIKZ.js → chunk-6BV5NAPD.js} +60 -21
  31. package/dist/chunk-6BV5NAPD.js.map +1 -0
  32. package/dist/{chunk-BLWNI5KW.js → chunk-AKVAZ5CB.js} +2 -2
  33. package/dist/{chunk-BLWNI5KW.js.map → chunk-AKVAZ5CB.js.map} +1 -1
  34. package/dist/{chunk-BFIK6NPZ.js → chunk-AM5LFRXJ.js} +3 -3
  35. package/dist/{chunk-BFIK6NPZ.js.map → chunk-AM5LFRXJ.js.map} +1 -1
  36. package/dist/{chunk-PTS3QN5P.js → chunk-EEHOMCRU.js} +1021 -115
  37. package/dist/chunk-EEHOMCRU.js.map +1 -0
  38. package/dist/{chunk-CXX3UGJP.js → chunk-ENBTXMPL.js} +7 -7
  39. package/dist/{chunk-CXX3UGJP.js.map → chunk-ENBTXMPL.js.map} +1 -1
  40. package/dist/{chunk-FB4GPWYC.js → chunk-FKBQRV4J.js} +57 -16
  41. package/dist/chunk-FKBQRV4J.js.map +1 -0
  42. package/dist/{chunk-X6BPVUV2.js → chunk-G5V6YCHF.js} +3 -3
  43. package/dist/{chunk-X6BPVUV2.js.map → chunk-G5V6YCHF.js.map} +1 -1
  44. package/dist/{chunk-WG3L5VHF.js → chunk-GM2X24Q6.js} +2 -2
  45. package/dist/{chunk-WG3L5VHF.js.map → chunk-GM2X24Q6.js.map} +1 -1
  46. package/dist/{chunk-7IRH7MGV.js → chunk-IHX2SN35.js} +9 -9
  47. package/dist/{chunk-7IRH7MGV.js.map → chunk-IHX2SN35.js.map} +1 -1
  48. package/dist/{chunk-3F54MH2T.js → chunk-JAFEMG7W.js} +4 -4
  49. package/dist/{chunk-3F54MH2T.js.map → chunk-JAFEMG7W.js.map} +1 -1
  50. package/dist/{chunk-RIEXN7WA.js → chunk-MADO7PH5.js} +2 -2
  51. package/dist/{chunk-RIEXN7WA.js.map → chunk-MADO7PH5.js.map} +1 -1
  52. package/dist/{chunk-BCTU4TN7.js → chunk-MWFYXUFK.js} +3 -3
  53. package/dist/{chunk-BCTU4TN7.js.map → chunk-MWFYXUFK.js.map} +1 -1
  54. package/dist/{chunk-TK66CMXV.js → chunk-NU4E7C5I.js} +7 -3
  55. package/dist/chunk-NU4E7C5I.js.map +1 -0
  56. package/dist/{chunk-ZR5Q4KZK.js → chunk-O7ROIKTF.js} +3 -3
  57. package/dist/{chunk-ZR5Q4KZK.js.map → chunk-O7ROIKTF.js.map} +1 -1
  58. package/dist/{chunk-ZE2KEPE2.js → chunk-OEGHKO5N.js} +258 -24
  59. package/dist/chunk-OEGHKO5N.js.map +1 -0
  60. package/dist/{chunk-63ZPKREA.js → chunk-P43HBWKK.js} +11 -4
  61. package/dist/chunk-P43HBWKK.js.map +1 -0
  62. package/dist/{chunk-7UZGKVSK.js → chunk-PJ6INYDD.js} +3 -3
  63. package/dist/{chunk-7UZGKVSK.js.map → chunk-PJ6INYDD.js.map} +1 -1
  64. package/dist/{chunk-UNP4M5ZZ.js → chunk-UGKOWIRP.js} +4 -4
  65. package/dist/{chunk-UNP4M5ZZ.js.map → chunk-UGKOWIRP.js.map} +1 -1
  66. package/dist/{chunk-ETFETLLB.js → chunk-UZYTSIX6.js} +6 -6
  67. package/dist/{chunk-ETFETLLB.js.map → chunk-UZYTSIX6.js.map} +1 -1
  68. package/dist/{chunk-SIF5F5SN.js → chunk-V4ZLZJFN.js} +3 -3
  69. package/dist/{chunk-SIF5F5SN.js.map → chunk-V4ZLZJFN.js.map} +1 -1
  70. package/dist/{chunk-CILACPUC.js → chunk-WSARNOPP.js} +5 -5
  71. package/dist/{chunk-CILACPUC.js.map → chunk-WSARNOPP.js.map} +1 -1
  72. package/dist/cli/index.js +49 -49
  73. package/dist/connectors/config.js +1 -1
  74. package/dist/connectors/index.js +6 -6
  75. package/dist/core/index.js +1 -1
  76. package/dist/core/src/subprocess.d.ts +5 -1
  77. package/dist/core/src/subprocess.d.ts.map +1 -1
  78. package/dist/deploy/index.js +1 -1
  79. package/dist/discovery/index.js +1 -1
  80. package/dist/{ensure-sources-R6KW7K3M.js → ensure-sources-QF72HVUM.js} +8 -8
  81. package/dist/{ensure-sources-R6KW7K3M.js.map → ensure-sources-QF72HVUM.js.map} +1 -1
  82. package/dist/factory-assets/connectors/box.js +6 -6
  83. package/dist/factory-assets/connectors/deploy.js +6 -6
  84. package/dist/factory-assets/connectors/devserver.js +6 -6
  85. package/dist/factory-assets/connectors/flow/CONNECTOR.md +61 -14
  86. package/dist/factory-assets/connectors/flow/adapter.d.ts +78 -34
  87. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  88. package/dist/factory-assets/connectors/flow/adapter.js +6 -6
  89. package/dist/factory-assets/connectors/flow/contract/expression.d.ts +55 -0
  90. package/dist/factory-assets/connectors/flow/contract/expression.d.ts.map +1 -1
  91. package/dist/factory-assets/connectors/flow/contract/flow.v2.schema.json +61 -134
  92. package/dist/factory-assets/connectors/flow/contract/index.d.ts +1 -1
  93. package/dist/factory-assets/connectors/flow/contract/index.d.ts.map +1 -1
  94. package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
  95. package/dist/factory-assets/connectors/flow/contract/schema.d.ts +14 -2
  96. package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
  97. package/dist/factory-assets/connectors/flow/contract.js +2 -2
  98. package/dist/factory-assets/connectors/flow/engine/bindings.d.ts +9 -0
  99. package/dist/factory-assets/connectors/flow/engine/bindings.d.ts.map +1 -0
  100. package/dist/factory-assets/connectors/flow/engine/engine.d.ts +11 -6
  101. package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -1
  102. package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -1
  103. package/dist/factory-assets/connectors/flow/engine/index.d.ts +2 -0
  104. package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -1
  105. package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts +22 -0
  106. package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts.map +1 -1
  107. package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts +18 -0
  108. package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts.map +1 -0
  109. package/dist/factory-assets/connectors/flow/engine/types.d.ts +21 -15
  110. package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -1
  111. package/dist/factory-assets/connectors/flow/engine.js +4 -4
  112. package/dist/factory-assets/connectors/flow/index.d.ts +3 -0
  113. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
  114. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts +48 -0
  115. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts.map +1 -0
  116. package/dist/factory-assets/connectors/flow/node-executor.d.ts +45 -0
  117. package/dist/factory-assets/connectors/flow/node-executor.d.ts.map +1 -0
  118. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts +3 -2
  119. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -1
  120. package/dist/factory-assets/connectors/flow/prompt-fragments.js +2 -2
  121. package/dist/factory-assets/connectors/flow/run-flow.d.ts +10 -9
  122. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  123. package/dist/factory-assets/connectors/flow/run-flow.js +7 -7
  124. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts +73 -0
  125. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts.map +1 -0
  126. package/dist/factory-assets/connectors/flow.js +6 -6
  127. package/dist/factory-assets/connectors/git.js +6 -6
  128. package/dist/factory-assets/connectors/gmail.js +6 -6
  129. package/dist/factory-assets/connectors/googledrive.js +6 -6
  130. package/dist/factory-assets/connectors/local.js +6 -6
  131. package/dist/factory-assets/connectors/mattermost.js +6 -6
  132. package/dist/factory-assets/connectors/memory.js +6 -6
  133. package/dist/factory-assets/connectors/minio.js +6 -6
  134. package/dist/factory-assets/connectors/postgres.js +6 -6
  135. package/dist/factory-assets/connectors/s3.js +6 -6
  136. package/dist/factory-assets/connectors/sharepoint.js +6 -6
  137. package/dist/factory-assets/connectors/sqlite.js +6 -6
  138. package/dist/factory-assets/connectors/static-server.js +6 -6
  139. package/dist/factory-assets/connectors/tunnel.js +6 -6
  140. package/dist/factory-assets/connectors/webdav.js +6 -6
  141. package/dist/factory-assets/connectors/xstate-store.js +6 -6
  142. package/dist/factory-assets/connectors/xstate.js +6 -6
  143. package/dist/{flows-F3CJNMK6.js → flows-YIW4HL3L.js} +4 -4
  144. package/dist/{flows-F3CJNMK6.js.map → flows-YIW4HL3L.js.map} +1 -1
  145. package/dist/{helpers-KPOLCGKX.js → helpers-LURCZHA4.js} +8 -8
  146. package/dist/{helpers-KPOLCGKX.js.map → helpers-LURCZHA4.js.map} +1 -1
  147. package/dist/library/index.js +3 -3
  148. package/dist/library/install.js +1 -1
  149. package/dist/{library-publish-ZAPZS64O.js → library-publish-2GMJM3NZ.js} +14 -14
  150. package/dist/{library-publish-ZAPZS64O.js.map → library-publish-2GMJM3NZ.js.map} +1 -1
  151. package/dist/{open-library-I4F2UNOY.js → open-library-POFOXZWH.js} +12 -12
  152. package/dist/{open-library-I4F2UNOY.js.map → open-library-POFOXZWH.js.map} +1 -1
  153. package/dist/{paths-KBACHM5B.js → paths-ZLX4ITAQ.js} +6 -6
  154. package/dist/{paths-KBACHM5B.js.map → paths-ZLX4ITAQ.js.map} +1 -1
  155. package/dist/{plugin-store-CYSNVZIX.js → plugin-store-YIMNH2FH.js} +3 -3
  156. package/dist/{plugin-store-CYSNVZIX.js.map → plugin-store-YIMNH2FH.js.map} +1 -1
  157. package/dist/{project-SIHZBTGB.js → project-GVOPZEJZ.js} +9 -9
  158. package/dist/{project-SIHZBTGB.js.map → project-GVOPZEJZ.js.map} +1 -1
  159. package/dist/resolver/index.js +1 -1
  160. package/dist/runner/index.js +14 -11
  161. package/dist/runner/src/serve.d.ts +3 -1
  162. package/dist/runner/src/serve.d.ts.map +1 -1
  163. package/dist/sdk/asset-manager.js +5 -5
  164. package/dist/sdk/bridge.js +2 -2
  165. package/dist/sdk/core.js +1 -1
  166. package/dist/sdk/flow.js +4 -4
  167. package/dist/sdk/index.js +14 -11
  168. package/dist/sdk/index.js.map +1 -1
  169. package/dist/sdk/resolver.js +1 -1
  170. package/dist/sdk/runner.js +14 -11
  171. package/dist/{setup-KMBXMV25.js → setup-TJYLYT2A.js} +5 -5
  172. package/dist/{setup-KMBXMV25.js.map → setup-TJYLYT2A.js.map} +1 -1
  173. package/dist/{skills-LHS4TOKK.js → skills-HGVH6UTA.js} +5 -5
  174. package/dist/{skills-LHS4TOKK.js.map → skills-HGVH6UTA.js.map} +1 -1
  175. package/dist/{source-X226ZJPR.js → source-FB3T4IHP.js} +13 -13
  176. package/dist/{source-X226ZJPR.js.map → source-FB3T4IHP.js.map} +1 -1
  177. package/dist/{source-manifest-publish-N2QVUR5U.js → source-manifest-publish-XTRDVPSC.js} +15 -15
  178. package/dist/{source-manifest-publish-N2QVUR5U.js.map → source-manifest-publish-XTRDVPSC.js.map} +1 -1
  179. package/dist/tui/index.js +14 -11
  180. package/dist/tui/index.js.map +1 -1
  181. package/dist/types/src/flow.d.ts +26 -0
  182. package/dist/types/src/flow.d.ts.map +1 -1
  183. package/dist/types/src/index.d.ts +1 -1
  184. package/dist/types/src/index.d.ts.map +1 -1
  185. package/dist/workspace-plugin/adapters/mcp.js +4 -4
  186. package/dist/workspace-plugin/adapters/omp.js +7 -7
  187. package/dist/workspace-plugin/index.js +1 -1
  188. package/package.json +1 -1
  189. package/dist/chunk-63ZPKREA.js.map +0 -1
  190. package/dist/chunk-DZM33LQO.js.map +0 -1
  191. package/dist/chunk-FB4GPWYC.js.map +0 -1
  192. package/dist/chunk-LD6YGIKZ.js.map +0 -1
  193. package/dist/chunk-PTS3QN5P.js.map +0 -1
  194. package/dist/chunk-TAJBFYCT.js.map +0 -1
  195. package/dist/chunk-TK66CMXV.js.map +0 -1
  196. package/dist/chunk-UQ3RJKDD.js.map +0 -1
  197. package/dist/chunk-ZE2KEPE2.js.map +0 -1
package/dist/cli/index.js CHANGED
@@ -1,16 +1,13 @@
1
1
  #!/usr/bin/env node
2
- import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportInstalledSoftDeps } from '../chunk-CXX3UGJP.js';
3
- import { makeSourceCommand, syncProjectSources } from '../chunk-7IRH7MGV.js';
4
- import { AI_RESOURCES, aiResourceRoots } from '../chunk-G2ILW47R.js';
5
- import { getStoreConfig, storeFetch, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, isStoreAuthenticated, getStoreToken, getStoreIdentity } from '../chunk-BFIK6NPZ.js';
6
- import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-ETFETLLB.js';
7
- import { logErr, S, logOk, logInfo, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, logWarn, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth } from '../chunk-7UZGKVSK.js';
2
+ import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportInstalledSoftDeps } from '../chunk-ENBTXMPL.js';
3
+ import { makeSourceCommand, syncProjectSources } from '../chunk-IHX2SN35.js';
4
+ import { AI_RESOURCES, aiResourceRoots } from '../chunk-57RFYEVM.js';
5
+ import { getStoreConfig, storeFetch, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, isStoreAuthenticated, getStoreToken, getStoreIdentity } from '../chunk-AM5LFRXJ.js';
6
+ import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-UZYTSIX6.js';
7
+ import { logErr, S, logOk, logInfo, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, logWarn, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth } from '../chunk-PJ6INYDD.js';
8
8
  import { LocalSecretsProvider } from '../chunk-6BEGKO2Q.js';
9
- import { runFlow, resumeFlow } from '../chunk-LD6YGIKZ.js';
10
- import '../chunk-4R6DROGN.js';
11
- import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-CZZRDYT4.js';
12
- import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-TAJBFYCT.js';
13
- import { buildClaudePluginFiles } from '../chunk-BLWNI5KW.js';
9
+ import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-2QVPCZTL.js';
10
+ import { buildClaudePluginFiles } from '../chunk-AKVAZ5CB.js';
14
11
  import '../chunk-X5YPJV4N.js';
15
12
  import '../chunk-W3UDISS2.js';
16
13
  import '../chunk-O7SG5PC2.js';
@@ -18,32 +15,35 @@ import '../chunk-7QBNJTTQ.js';
18
15
  import '../chunk-GTS2FODO.js';
19
16
  import '../chunk-WQ7DE5UC.js';
20
17
  import '../chunk-32NA4TVC.js';
21
- import '../chunk-ZR5Q4KZK.js';
18
+ import '../chunk-O7ROIKTF.js';
22
19
  import '../chunk-ISQWMBKD.js';
23
20
  import '../chunk-RRVQAE5D.js';
24
21
  import '../chunk-BMQKMOQY.js';
25
22
  import '../chunk-GAH4YRCI.js';
26
- import '../chunk-WG3L5VHF.js';
23
+ import '../chunk-GM2X24Q6.js';
24
+ import { runFlow, resumeFlow } from '../chunk-6BV5NAPD.js';
25
+ import '../chunk-4R6DROGN.js';
26
+ import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-CZZRDYT4.js';
27
27
  import '../chunk-BEAIJRVF.js';
28
- import '../chunk-SIF5F5SN.js';
29
- import '../chunk-PTS3QN5P.js';
28
+ import '../chunk-V4ZLZJFN.js';
29
+ import '../chunk-EEHOMCRU.js';
30
30
  import '../chunk-ZNIHTT22.js';
31
31
  import '../chunk-6E6PKKAD.js';
32
32
  import '../chunk-IFGTRL2I.js';
33
- import { loadFlow, loadAllFlows } from '../chunk-UQ3RJKDD.js';
34
- import '../chunk-ZE2KEPE2.js';
35
- import '../chunk-FB4GPWYC.js';
36
- import '../chunk-DZM33LQO.js';
33
+ import { loadFlow, loadAllFlows } from '../chunk-4O2RAXKJ.js';
34
+ import '../chunk-OEGHKO5N.js';
35
+ import '../chunk-FKBQRV4J.js';
36
+ import '../chunk-4QROZZ5Z.js';
37
37
  import '../chunk-RDE43ORT.js';
38
- import { AssetManager, NON_DEPLOYABLE_KINDS, MissingManifestError, parseRefTolerant, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-CILACPUC.js';
39
- import { resolveLibraryDir, getStoreManifestsDir, getDefaultValue, isSecretPlaceholder } from '../chunk-W3Q37HEF.js';
40
- import '../chunk-TK66CMXV.js';
38
+ import { AssetManager, NON_DEPLOYABLE_KINDS, MissingManifestError, parseRefTolerant, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-WSARNOPP.js';
39
+ import { resolveLibraryDir, getStoreManifestsDir, getDefaultValue, isSecretPlaceholder } from '../chunk-3HVASHBF.js';
40
+ import '../chunk-NU4E7C5I.js';
41
41
  import '../chunk-UKJMQZV6.js';
42
42
  import '../chunk-R7FOF242.js';
43
43
  import '../chunk-JXT46QFC.js';
44
- import '../chunk-CERGXDGG.js';
44
+ import '../chunk-2OCYS5EP.js';
45
45
  import '../chunk-CGYEHQOX.js';
46
- import { resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor, checkAgentSkillConformance, readLock } from '../chunk-63ZPKREA.js';
46
+ import { resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor, checkAgentSkillConformance, readLock } from '../chunk-P43HBWKK.js';
47
47
  import '../chunk-F3HNW354.js';
48
48
  import { DRIVER_DEFAULTS } from '../chunk-K5GBV4SA.js';
49
49
  import { assetSearchDirs, detectDomains } from '../chunk-ZAP2BDHG.js';
@@ -110,7 +110,7 @@ async function runSearch(kind, query, opts) {
110
110
  }
111
111
  }
112
112
  async function searchIndex(query, kind) {
113
- const { openLibrary: openLibrary2 } = await import('../open-library-I4F2UNOY.js');
113
+ const { openLibrary: openLibrary2 } = await import('../open-library-POFOXZWH.js');
114
114
  const library = await openLibrary2();
115
115
  try {
116
116
  const defs = await library.listAssetDefs(kind ? { kind } : {});
@@ -163,7 +163,7 @@ async function searchLocal(query, kind, opts, showStore, airGapped) {
163
163
  const factory = await searchFactory(projectDir, query, kind);
164
164
  let entries = unionEntries(await searchIndex(query, kind), factory);
165
165
  if (entries.length === 0 && !query && !kind && !airGapped) {
166
- const { autoSyncForSearch } = await import('../source-X226ZJPR.js');
166
+ const { autoSyncForSearch } = await import('../source-FB3T4IHP.js');
167
167
  if (await autoSyncForSearch(projectDir)) {
168
168
  entries = unionEntries(await searchIndex(query, kind), factory);
169
169
  }
@@ -217,7 +217,7 @@ async function searchStore(query, kind, opts, airGapped) {
217
217
  logInfo("air-gapped (cache_ttl: 0) \u2014 local sources only");
218
218
  return;
219
219
  }
220
- const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-I4F2UNOY.js');
220
+ const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-POFOXZWH.js');
221
221
  try {
222
222
  const remote = await openCatalogSource2({ projectDir: path14__default.resolve(opts.projectDir) });
223
223
  const assets = await remote.listAssets(kind ? { kind } : {});
@@ -532,7 +532,7 @@ async function resolveInfoEntry(am2, ref, opts) {
532
532
  return { entry: match ?? deployed };
533
533
  }
534
534
  const lookup = opts.storeLookup ?? (async (filter) => {
535
- const { resolveCatalogSource } = await import('../open-library-I4F2UNOY.js');
535
+ const { resolveCatalogSource } = await import('../open-library-POFOXZWH.js');
536
536
  const { source, close } = await resolveCatalogSource({ projectDir: opts.projectDir });
537
537
  try {
538
538
  return await source.listAssets(filter);
@@ -548,7 +548,7 @@ async function resolveInfoEntry(am2, ref, opts) {
548
548
  );
549
549
  return { entry: hit ? catalogAssetToEntry(hit) : null };
550
550
  } catch (err) {
551
- const { LocalCatalogDisabledError } = await import('../open-library-I4F2UNOY.js');
551
+ const { LocalCatalogDisabledError } = await import('../open-library-POFOXZWH.js');
552
552
  const storeNote = err instanceof Error ? err.message : String(err);
553
553
  const disabled = err instanceof LocalCatalogDisabledError || /catalog\.url/i.test(storeNote);
554
554
  return { entry: null, storeNote, ...disabled ? { storeDisabled: true } : {} };
@@ -1168,7 +1168,7 @@ function makeCatalogCommand() {
1168
1168
  return catalog;
1169
1169
  }
1170
1170
  async function runLocalCatalogTest(projectDir) {
1171
- const { resolveCatalogSource } = await import('../open-library-I4F2UNOY.js');
1171
+ const { resolveCatalogSource } = await import('../open-library-POFOXZWH.js');
1172
1172
  let resolved;
1173
1173
  try {
1174
1174
  resolved = await resolveCatalogSource({ projectDir });
@@ -2158,7 +2158,7 @@ async function ensureTargetsRegistered(projectDir) {
2158
2158
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
2159
2159
  const config = resolveSkWorkspaceConfig2(projectDir);
2160
2160
  if (config.plugins && config.plugins.length > 0) {
2161
- const { ensurePluginsLoaded } = await import('../plugin-store-CYSNVZIX.js');
2161
+ const { ensurePluginsLoaded } = await import('../plugin-store-YIMNH2FH.js');
2162
2162
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
2163
2163
  for (const f of result.failed) logWarn(f.error);
2164
2164
  }
@@ -3407,16 +3407,16 @@ function makeLibraryCommand() {
3407
3407
  });
3408
3408
  cmd.command("publish <lib>").description("Push + register the library's manifest atomically (needs git backend)").option("--asset <ref>", "Publish only the single asset matching this ref/name").option("--create-repo", "Provision + link a public github repo if the library has no remote").option("--ref <gitref>", "Git ref to ingest (default: the library branch or main)").option("--dry-run", "Print the plan; push nothing and call no store endpoint").action(
3409
3409
  async (lib, opts) => {
3410
- const { runLibraryPublish } = await import('../library-publish-ZAPZS64O.js');
3410
+ const { runLibraryPublish } = await import('../library-publish-2GMJM3NZ.js');
3411
3411
  await withStoreErrorHandling(() => runLibraryPublish(lib, opts));
3412
3412
  }
3413
3413
  );
3414
3414
  cmd.command("register <lib>").description("Register the library's manifest without pushing (bytes already on github)").option("--asset <ref>", "Publish only the single asset matching this ref/name").option("--ref <gitref>", "Git ref to ingest (default: the library branch or main)").option("--dry-run", "Print the plan; call no store endpoint").action(async (lib, opts) => {
3415
- const { runLibraryRegister } = await import('../library-publish-ZAPZS64O.js');
3415
+ const { runLibraryRegister } = await import('../library-publish-2GMJM3NZ.js');
3416
3416
  await withStoreErrorHandling(() => runLibraryRegister(lib, opts));
3417
3417
  });
3418
3418
  cmd.command("yank <lib>").description("Retract the library's published assets from the store").option("--asset <ref>", "Yank only the single asset matching this ref/name").action(async (lib, opts) => {
3419
- const { runLibraryYank } = await import('../library-publish-ZAPZS64O.js');
3419
+ const { runLibraryYank } = await import('../library-publish-2GMJM3NZ.js');
3420
3420
  await withStoreErrorHandling(() => runLibraryYank(lib, opts));
3421
3421
  });
3422
3422
  return cmd;
@@ -4138,7 +4138,7 @@ function scheduleSoftDepPreview() {
4138
4138
  }
4139
4139
  async function loadAssets() {
4140
4140
  softDepPreviewCache.clear();
4141
- const { gatherAssetFeeds } = await import('../asset-feeds-DKNYRLED.js');
4141
+ const { gatherAssetFeeds } = await import('../asset-feeds-4AWAT5PW.js');
4142
4142
  const { entries, domains, notes } = await gatherAssetFeeds(am, am.projectDir);
4143
4143
  if (notes.length > 0) {
4144
4144
  state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
@@ -4344,7 +4344,7 @@ function reconcileCollapsedSets(rows) {
4344
4344
  async function loadSourcesAndLibraries() {
4345
4345
  try {
4346
4346
  const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir }, { getGlobalCacheDir: getGlobalCacheDir2 }] = await Promise.all([
4347
- import('../open-library-I4F2UNOY.js'),
4347
+ import('../open-library-POFOXZWH.js'),
4348
4348
  import('../library/index.js'),
4349
4349
  import('../core/index.js')
4350
4350
  ]);
@@ -5633,7 +5633,7 @@ function action2(fn) {
5633
5633
  };
5634
5634
  }
5635
5635
  async function reconcileAndReport(projectDir, plugins) {
5636
- const { reconcilePlugins } = await import('../plugin-store-CYSNVZIX.js');
5636
+ const { reconcilePlugins } = await import('../plugin-store-YIMNH2FH.js');
5637
5637
  if (plugins.length === 0) {
5638
5638
  logInfo("No plugins declared \u2014 nothing to reconcile.");
5639
5639
  return;
@@ -5649,7 +5649,7 @@ async function reconcileAndReport(projectDir, plugins) {
5649
5649
  async function runInstall2(spec, opts) {
5650
5650
  const projectDir = path14__default.resolve(opts.projectDir);
5651
5651
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
5652
- const { specName } = await import('../plugin-store-CYSNVZIX.js');
5652
+ const { specName } = await import('../plugin-store-YIMNH2FH.js');
5653
5653
  const yamlPath = path14__default.join(projectDir, "skaile.yaml");
5654
5654
  const editor = WorkspaceYamlEditor2.load(yamlPath);
5655
5655
  const replaced = editor.addPlugin(spec, specName);
@@ -5661,7 +5661,7 @@ async function runInstall2(spec, opts) {
5661
5661
  async function runRemove(name, opts) {
5662
5662
  const projectDir = path14__default.resolve(opts.projectDir);
5663
5663
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
5664
- const { specName } = await import('../plugin-store-CYSNVZIX.js');
5664
+ const { specName } = await import('../plugin-store-YIMNH2FH.js');
5665
5665
  const yamlPath = path14__default.join(projectDir, "skaile.yaml");
5666
5666
  const editor = WorkspaceYamlEditor2.load(yamlPath);
5667
5667
  const removed = editor.removePlugin(name, specName);
@@ -5689,7 +5689,7 @@ async function runList(opts) {
5689
5689
  const registry = createPluginRegistry();
5690
5690
  if (declared.length > 0) {
5691
5691
  try {
5692
- const { loadPlugins } = await import('../plugin-store-CYSNVZIX.js');
5692
+ const { loadPlugins } = await import('../plugin-store-YIMNH2FH.js');
5693
5693
  const result = await loadPlugins(projectDir, declared, registry);
5694
5694
  for (const f of result.failed) logWarn(f.error);
5695
5695
  } catch (err) {
@@ -6788,12 +6788,12 @@ function makeServeCommand() {
6788
6788
  );
6789
6789
  }
6790
6790
  async function ensurePluginsLoadedForServe(projectDir) {
6791
- const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-KPOLCGKX.js');
6791
+ const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-LURCZHA4.js');
6792
6792
  try {
6793
6793
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
6794
6794
  const config = resolveSkWorkspaceConfig2(projectDir);
6795
6795
  if (!config.plugins || config.plugins.length === 0) return;
6796
- const { ensurePluginsLoaded } = await import('../plugin-store-CYSNVZIX.js');
6796
+ const { ensurePluginsLoaded } = await import('../plugin-store-YIMNH2FH.js');
6797
6797
  const { pluginRegistry } = await import('../plugin-registry/index.js');
6798
6798
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
6799
6799
  if (result.loaded.length > 0) {
@@ -6807,14 +6807,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
6807
6807
  }
6808
6808
  }
6809
6809
  async function runCompileTest(opts) {
6810
- const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-KPOLCGKX.js');
6810
+ const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-LURCZHA4.js');
6811
6811
  const { tmpdir } = await import('os');
6812
6812
  const { dirname: dirname4, join: join7, resolve: resolve5 } = await import('path');
6813
6813
  const { fileURLToPath: fileURLToPath2 } = await import('url');
6814
6814
  const { unlinkSync, existsSync: existsSync15 } = await import('fs');
6815
6815
  const { spawn } = await import('child_process');
6816
6816
  const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
6817
- const { MONOREPO_ROOT } = await import('../paths-KBACHM5B.js');
6817
+ const { MONOREPO_ROOT } = await import('../paths-ZLX4ITAQ.js');
6818
6818
  if (MONOREPO_ROOT === null) {
6819
6819
  logErr2("--compile-test is only available inside the skaile-dev workspace.");
6820
6820
  logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
@@ -7689,7 +7689,7 @@ function makeStoreCommand() {
7689
7689
  process.exit(2);
7690
7690
  });
7691
7691
  store.command("search <query>").description("Search the AI Asset Store catalog by name, description, or publisher").option("--kind <kind>", "Filter by asset kind (skill, agent, prompt, flow, \u2026)").option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (query, opts) => {
7692
- const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-I4F2UNOY.js');
7692
+ const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-POFOXZWH.js');
7693
7693
  try {
7694
7694
  const remote = await openCatalogSource2({ projectDir: path14__default.resolve(opts.projectDir) });
7695
7695
  const assets = await remote.listAssets(opts.kind ? { kind: opts.kind } : {});
@@ -7722,8 +7722,8 @@ function makeStoreCommand() {
7722
7722
  }
7723
7723
  });
7724
7724
  store.command("show <ref>").description("Show a store asset's details + provenance (source, files, integrity)").option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (ref, opts) => {
7725
- const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-I4F2UNOY.js');
7726
- const { supportsInstallManifest } = await import('../project-SIHZBTGB.js');
7725
+ const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-POFOXZWH.js');
7726
+ const { supportsInstallManifest } = await import('../project-GVOPZEJZ.js');
7727
7727
  try {
7728
7728
  const remote = await openCatalogSource2({ projectDir: path14__default.resolve(opts.projectDir) });
7729
7729
  const asset = await remote.resolve(ref);
@@ -8803,7 +8803,7 @@ async function bootstrapUserConfig() {
8803
8803
  }
8804
8804
  async function hydrateInitSources(resolved, created) {
8805
8805
  try {
8806
- const { ensureSourcesCloned } = await import('../ensure-sources-R6KW7K3M.js');
8806
+ const { ensureSourcesCloned } = await import('../ensure-sources-QF72HVUM.js');
8807
8807
  const hydrate = ensureSourcesCloned(resolved, { quiet: true });
8808
8808
  for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
8809
8809
  if (hydrate.failed.length > 0) {
@@ -8843,7 +8843,7 @@ function printInitSummary(resolved, projectDir, created) {
8843
8843
  console.log();
8844
8844
  }
8845
8845
  program.command("setup").description("Interactive provider setup wizard").action(async () => {
8846
- const { cmdSetup } = await import('../setup-KMBXMV25.js');
8846
+ const { cmdSetup } = await import('../setup-TJYLYT2A.js');
8847
8847
  await cmdSetup([], { projectDir: process.cwd() });
8848
8848
  });
8849
8849
  program.addCommand(makeInstallCommand());
@@ -1,5 +1,5 @@
1
1
  export { LegacyAuthGrammarError, createCliSecretProviderChain, createForgeSecretProviderChain, loadConnectorDeclarations, resolveAuthRef, resolveBackendAuthFor, resolvedConfigToDeclarations } from '../chunk-ZNIHTT22.js';
2
- import '../chunk-63ZPKREA.js';
2
+ import '../chunk-P43HBWKK.js';
3
3
  import '../chunk-F3HNW354.js';
4
4
  import '../chunk-K5GBV4SA.js';
5
5
  import '../chunk-ZAP2BDHG.js';
@@ -1,12 +1,12 @@
1
- export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, FlowAdapter, LogBuffer, ManagedGitconfigCollisionError, PortPool, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, buildSdkFlowTools, createFsWatcher, createWorktree, defaultSpawn, ensureDirMode, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock } from '../chunk-PTS3QN5P.js';
1
+ export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, FlowAdapter, LogBuffer, ManagedGitconfigCollisionError, PortPool, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, buildSdkFlowTools, createFsWatcher, createWorktree, defaultSpawn, ensureDirMode, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock } from '../chunk-EEHOMCRU.js';
2
2
  export { EnvSecretProvider, ForgeSecretProvider, InMemorySecretProvider, LegacyAuthGrammarError, LockedSecretProvider, OAuthRequiredError, PreMintedSecretProvider, SecretProviderChain, createCliSecretProviderChain, createForgeSecretProviderChain, deriveSingleMaterializedConnectorDeclaration, fromMaterializedConnectorMd, isKnownSecretRef, loadConnectorDeclarations, loadMaterializedConnectorDeclarations, resolveAuthRef, resolveBackendAuthFor, resolvedConfigToDeclarations } from '../chunk-ZNIHTT22.js';
3
3
  import '../chunk-6E6PKKAD.js';
4
4
  import '../chunk-IFGTRL2I.js';
5
- import '../chunk-UQ3RJKDD.js';
6
- import '../chunk-ZE2KEPE2.js';
7
- import '../chunk-FB4GPWYC.js';
8
- import '../chunk-DZM33LQO.js';
9
- import '../chunk-63ZPKREA.js';
5
+ import '../chunk-4O2RAXKJ.js';
6
+ import '../chunk-OEGHKO5N.js';
7
+ import '../chunk-FKBQRV4J.js';
8
+ import '../chunk-4QROZZ5Z.js';
9
+ import '../chunk-P43HBWKK.js';
10
10
  import '../chunk-F3HNW354.js';
11
11
  import '../chunk-K5GBV4SA.js';
12
12
  import '../chunk-ZAP2BDHG.js';
@@ -1,4 +1,4 @@
1
- export { ALL_PROVIDERS, ManifestYamlEditor, SETTINGS_DEFAULTS, WorkspaceYamlEditor, applyPatch, buildLockFile, checkAgentSkillConformance, computeHash, detectEnvApiKeys, extractForPatch, generatePatch, globalSettingsPath, listPatches, loadSettings, mapLegacyFields, maskApiKey, migrateSettings, portableSpawn, portableSpawnSync, projectSettingsPath, providerEnvKey, readLock, readPatch, readPluginsLockSlice, resolveAllKeys, resolveApiKey, resolveSettings, savePatch, saveSettings, verifyLock, walkForSettings, writeLock, writePluginsLockSlice } from '../chunk-63ZPKREA.js';
1
+ export { ALL_PROVIDERS, ManifestYamlEditor, SETTINGS_DEFAULTS, WorkspaceYamlEditor, applyPatch, buildLockFile, checkAgentSkillConformance, computeHash, detectEnvApiKeys, extractForPatch, generatePatch, globalSettingsPath, listPatches, loadSettings, mapLegacyFields, maskApiKey, migrateSettings, portableSpawn, portableSpawnSync, projectSettingsPath, providerEnvKey, readLock, readPatch, readPluginsLockSlice, resolveAllKeys, resolveApiKey, resolveSettings, savePatch, saveSettings, verifyLock, walkForSettings, writeLock, writePluginsLockSlice } from '../chunk-P43HBWKK.js';
2
2
  export { deployedBase, deployedDir, isDeployed } from '../chunk-F3HNW354.js';
3
3
  export { DRIVER_DEFAULTS, resolveDriverPaths } from '../chunk-K5GBV4SA.js';
4
4
  export { ASSET_KIND_DIRS, assetSearchDirs, detectAiResources, detectDomains, detectMonorepoRoot } from '../chunk-ZAP2BDHG.js';
@@ -23,7 +23,11 @@ export interface PortableSubprocess {
23
23
  readonly pid: number;
24
24
  readonly stdout: ReadableStream<Uint8Array>;
25
25
  readonly stderr: ReadableStream<Uint8Array>;
26
- /** Resolves with the exit code once the process closes (-1 on spawn error). */
26
+ /**
27
+ * Resolves with the exit code once the process closes. Signal termination
28
+ * uses the conventional `128 + signal number`; spawn errors or unknown
29
+ * signals use `-1`.
30
+ */
27
31
  readonly exited: Promise<number>;
28
32
  kill(signal?: number | NodeJS.Signals): void;
29
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"subprocess.d.ts","sourceRoot":"","sources":["../../../core/src/subprocess.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACpE,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,yFAAyF;AACzF,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,oBAAyB,GAAG,kBAAkB,CA8BhG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,EAAE,wBAAwB,GAC7B,uBAAuB,CA8BzB"}
1
+ {"version":3,"file":"subprocess.d.ts","sourceRoot":"","sources":["../../../core/src/subprocess.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACpE,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,yFAAyF;AACzF,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,oBAAyB,GAAG,kBAAkB,CAqChG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,EAAE,wBAAwB,GAC7B,uBAAuB,CA8BzB"}
@@ -1,5 +1,5 @@
1
1
  import { makeDeployHandle, pluginRegistry } from '../chunk-6E6PKKAD.js';
2
- import { portableSpawnSync, portableSpawn } from '../chunk-63ZPKREA.js';
2
+ import { portableSpawnSync, portableSpawn } from '../chunk-P43HBWKK.js';
3
3
  import '../chunk-F3HNW354.js';
4
4
  import '../chunk-K5GBV4SA.js';
5
5
  import '../chunk-ZAP2BDHG.js';
@@ -1,4 +1,4 @@
1
- export { AGENT_COMPANION_DIRS, AssetKindRegistry, BUILTIN_PROVIDERS, DEFAULT_ATOMIZATION_POLICY, DOMAIN_MD_FILENAME, SEMVER_RE, SKILL_COMPANION_DIRS, SourceConfigSchema, VERSION, agentProvider, assignDomain, barePublisher, buildDomainIndex, buildRequiresGraph, closeOverReferences, computeDeterministicHash, computeDeterministicHashDetailed, connectorProvider, contractProvider, createDefaultRegistry, createNodeAssetFs, decodeManifestSourceConfig, detectCycles, discoverAssetsInTree, discoverAssetsInTreeEntries, discoverFromManifest, extractPathCandidates, extractRequires, extractSlashCommands, isDomainMdPath, isExcludedDevPath, isManifestMode, lintUncoveredReferences, loadMergedSourceConfig, loadMergedSourceConfigFromFile, loadSourceConfig, manifestToSourceConfig, mcpServerProvider, mergeSourceConfigs, parseDomainMd, parseSourceConfig, personaProvider, presetProvider, promptProvider, readManifestSourceConfig, rulesetProvider, scanAssetReferences, scanSlashCommandNames, skillProvider, validateDomains, validateSourceConfig } from '../chunk-TK66CMXV.js';
1
+ export { AGENT_COMPANION_DIRS, AssetKindRegistry, BUILTIN_PROVIDERS, DEFAULT_ATOMIZATION_POLICY, DOMAIN_MD_FILENAME, SEMVER_RE, SKILL_COMPANION_DIRS, SourceConfigSchema, VERSION, agentProvider, assignDomain, barePublisher, buildDomainIndex, buildRequiresGraph, closeOverReferences, computeDeterministicHash, computeDeterministicHashDetailed, connectorProvider, contractProvider, createDefaultRegistry, createNodeAssetFs, decodeManifestSourceConfig, detectCycles, discoverAssetsInTree, discoverAssetsInTreeEntries, discoverFromManifest, extractPathCandidates, extractRequires, extractSlashCommands, isDomainMdPath, isExcludedDevPath, isManifestMode, lintUncoveredReferences, loadMergedSourceConfig, loadMergedSourceConfigFromFile, loadSourceConfig, manifestToSourceConfig, mcpServerProvider, mergeSourceConfigs, parseDomainMd, parseSourceConfig, personaProvider, presetProvider, promptProvider, readManifestSourceConfig, rulesetProvider, scanAssetReferences, scanSlashCommandNames, skillProvider, validateDomains, validateSourceConfig } from '../chunk-NU4E7C5I.js';
2
2
  import '../chunk-JXT46QFC.js';
3
3
  import '../chunk-P4VHQA4N.js';
4
4
  import '../chunk-DYMWJAL4.js';
@@ -1,13 +1,13 @@
1
- import { logErr, logOk, logInfo } from './chunk-7UZGKVSK.js';
2
- import './chunk-CILACPUC.js';
3
- import './chunk-W3Q37HEF.js';
4
- import './chunk-TK66CMXV.js';
1
+ import { logErr, logOk, logInfo } from './chunk-PJ6INYDD.js';
2
+ import './chunk-WSARNOPP.js';
3
+ import './chunk-3HVASHBF.js';
4
+ import './chunk-NU4E7C5I.js';
5
5
  import './chunk-UKJMQZV6.js';
6
6
  import './chunk-R7FOF242.js';
7
7
  import './chunk-JXT46QFC.js';
8
- import './chunk-CERGXDGG.js';
8
+ import './chunk-2OCYS5EP.js';
9
9
  import './chunk-CGYEHQOX.js';
10
- import { WorkspaceYamlEditor } from './chunk-63ZPKREA.js';
10
+ import { WorkspaceYamlEditor } from './chunk-P43HBWKK.js';
11
11
  import './chunk-F3HNW354.js';
12
12
  import './chunk-K5GBV4SA.js';
13
13
  import './chunk-ZAP2BDHG.js';
@@ -86,5 +86,5 @@ function ensureSourcesCloned(projectDir, opts = {}) {
86
86
  }
87
87
 
88
88
  export { ensureSourcesCloned };
89
- //# sourceMappingURL=ensure-sources-R6KW7K3M.js.map
90
- //# sourceMappingURL=ensure-sources-R6KW7K3M.js.map
89
+ //# sourceMappingURL=ensure-sources-QF72HVUM.js.map
90
+ //# sourceMappingURL=ensure-sources-QF72HVUM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/ensure-sources.ts"],"names":[],"mappings":"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","file":"ensure-sources-R6KW7K3M.js","sourcesContent":["/**\n * ensure-sources.ts — hydrate the `~/.skaile/cache/sources/` clone cache from a\n * project's `skaile.yaml` `sources:` entries.\n *\n * Called by `skaile init` (idempotent: no-op when no sources declared) and\n * `skaile install` so checking out a project pulls its source clones onto\n * the local machine.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync, mkdirSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport {\n getGlobalCacheDir,\n type SourceEntry,\n sourceCacheKey,\n sourceShortName,\n WorkspaceYamlEditor,\n} from \"@skaile/workspaces/core\";\nimport { logErr, logInfo, logOk } from \"./helpers.ts\";\n\nfunction sourceClonePath(key: string): string {\n return path.join(getGlobalCacheDir(), key);\n}\n\nexport interface EnsureResult {\n cloned: string[];\n cached: string[];\n failed: string[];\n}\n\n/** Load `sources:` from a project's `skaile.yaml`, or `null` when unavailable. */\nfunction loadProjectSources(yamlPath: string, quiet: boolean): SourceEntry[] | null {\n try {\n return WorkspaceYamlEditor.load(yamlPath).getSources();\n } catch (err) {\n if (!quiet) {\n logErr(`Could not read ${yamlPath}: ${err instanceof Error ? err.message : String(err)}`);\n }\n return null;\n }\n}\n\n/**\n * Hydrate a single source entry into `result`: skip when already cached,\n * otherwise clone and record success/failure. Mutates `result` in place.\n */\nfunction hydrateSourceEntry(entry: SourceEntry, quiet: boolean, result: EnsureResult): void {\n const key = sourceCacheKey(entry.url);\n const slug = sourceShortName(entry.url);\n const dest = sourceClonePath(key);\n if (existsSync(dest)) {\n result.cached.push(slug);\n return;\n }\n mkdirSync(path.dirname(dest), { recursive: true });\n const args = [\"clone\", entry.url, dest];\n if (entry.pin) args.splice(1, 0, \"--branch\", entry.pin);\n const clone = spawnSync(\"git\", args, { stdio: quiet ? \"pipe\" : \"inherit\" });\n if (clone.status !== 0) {\n result.failed.push(slug);\n if (quiet) {\n logErr(`git clone failed for ${entry.url}`);\n }\n return;\n }\n result.cloned.push(slug);\n}\n\n/** Log a full-hydrate summary of cloned + reused-cached entries. */\nfunction logHydrateSummary(result: EnsureResult): void {\n for (const n of result.cloned) logOk(`Cloned source \"${n}\".`);\n if (result.cached.length > 0) {\n logInfo(`Reused cached clones: ${result.cached.join(\", \")}`);\n }\n}\n\n/**\n * Walk `projectDir/skaile.yaml` `sources:` and clone any entries whose\n * clone directory does not yet exist under `~/.skaile/cache/sources/`. Existing\n * clones are left untouched — this is hydration, not sync.\n *\n * Quiet by default: when `quiet: true` the helper only prints failures.\n * On full hydrate (`quiet: false`) it logs each cloned/cached entry.\n */\nexport function ensureSourcesCloned(\n projectDir: string,\n opts: { quiet?: boolean } = {},\n): EnsureResult {\n const result: EnsureResult = { cloned: [], cached: [], failed: [] };\n const yamlPath = path.join(projectDir, \"skaile.yaml\");\n if (!existsSync(yamlPath)) return result;\n\n const quiet = opts.quiet ?? false;\n const sources = loadProjectSources(yamlPath, quiet);\n if (sources === null) return result;\n if (sources.length === 0) return result;\n\n for (const entry of sources) {\n hydrateSourceEntry(entry, quiet, result);\n }\n\n if (!quiet) {\n logHydrateSummary(result);\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"sources":["../cli/src/ensure-sources.ts"],"names":[],"mappings":"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","file":"ensure-sources-QF72HVUM.js","sourcesContent":["/**\n * ensure-sources.ts — hydrate the `~/.skaile/cache/sources/` clone cache from a\n * project's `skaile.yaml` `sources:` entries.\n *\n * Called by `skaile init` (idempotent: no-op when no sources declared) and\n * `skaile install` so checking out a project pulls its source clones onto\n * the local machine.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync, mkdirSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport {\n getGlobalCacheDir,\n type SourceEntry,\n sourceCacheKey,\n sourceShortName,\n WorkspaceYamlEditor,\n} from \"@skaile/workspaces/core\";\nimport { logErr, logInfo, logOk } from \"./helpers.ts\";\n\nfunction sourceClonePath(key: string): string {\n return path.join(getGlobalCacheDir(), key);\n}\n\nexport interface EnsureResult {\n cloned: string[];\n cached: string[];\n failed: string[];\n}\n\n/** Load `sources:` from a project's `skaile.yaml`, or `null` when unavailable. */\nfunction loadProjectSources(yamlPath: string, quiet: boolean): SourceEntry[] | null {\n try {\n return WorkspaceYamlEditor.load(yamlPath).getSources();\n } catch (err) {\n if (!quiet) {\n logErr(`Could not read ${yamlPath}: ${err instanceof Error ? err.message : String(err)}`);\n }\n return null;\n }\n}\n\n/**\n * Hydrate a single source entry into `result`: skip when already cached,\n * otherwise clone and record success/failure. Mutates `result` in place.\n */\nfunction hydrateSourceEntry(entry: SourceEntry, quiet: boolean, result: EnsureResult): void {\n const key = sourceCacheKey(entry.url);\n const slug = sourceShortName(entry.url);\n const dest = sourceClonePath(key);\n if (existsSync(dest)) {\n result.cached.push(slug);\n return;\n }\n mkdirSync(path.dirname(dest), { recursive: true });\n const args = [\"clone\", entry.url, dest];\n if (entry.pin) args.splice(1, 0, \"--branch\", entry.pin);\n const clone = spawnSync(\"git\", args, { stdio: quiet ? \"pipe\" : \"inherit\" });\n if (clone.status !== 0) {\n result.failed.push(slug);\n if (quiet) {\n logErr(`git clone failed for ${entry.url}`);\n }\n return;\n }\n result.cloned.push(slug);\n}\n\n/** Log a full-hydrate summary of cloned + reused-cached entries. */\nfunction logHydrateSummary(result: EnsureResult): void {\n for (const n of result.cloned) logOk(`Cloned source \"${n}\".`);\n if (result.cached.length > 0) {\n logInfo(`Reused cached clones: ${result.cached.join(\", \")}`);\n }\n}\n\n/**\n * Walk `projectDir/skaile.yaml` `sources:` and clone any entries whose\n * clone directory does not yet exist under `~/.skaile/cache/sources/`. Existing\n * clones are left untouched — this is hydration, not sync.\n *\n * Quiet by default: when `quiet: true` the helper only prints failures.\n * On full hydrate (`quiet: false`) it logs each cloned/cached entry.\n */\nexport function ensureSourcesCloned(\n projectDir: string,\n opts: { quiet?: boolean } = {},\n): EnsureResult {\n const result: EnsureResult = { cloned: [], cached: [], failed: [] };\n const yamlPath = path.join(projectDir, \"skaile.yaml\");\n if (!existsSync(yamlPath)) return result;\n\n const quiet = opts.quiet ?? false;\n const sources = loadProjectSources(yamlPath, quiet);\n if (sources === null) return result;\n if (sources.length === 0) return result;\n\n for (const entry of sources) {\n hydrateSourceEntry(entry, quiet, result);\n }\n\n if (!quiet) {\n logHydrateSummary(result);\n }\n\n return result;\n}\n"]}
@@ -1,12 +1,12 @@
1
- export { BoxConnector, createConnector4 as createConnector } from '../../chunk-PTS3QN5P.js';
1
+ export { BoxConnector, createConnector4 as createConnector } from '../../chunk-EEHOMCRU.js';
2
2
  import '../../chunk-ZNIHTT22.js';
3
3
  import '../../chunk-6E6PKKAD.js';
4
4
  import '../../chunk-IFGTRL2I.js';
5
- import '../../chunk-UQ3RJKDD.js';
6
- import '../../chunk-ZE2KEPE2.js';
7
- import '../../chunk-FB4GPWYC.js';
8
- import '../../chunk-DZM33LQO.js';
9
- import '../../chunk-63ZPKREA.js';
5
+ import '../../chunk-4O2RAXKJ.js';
6
+ import '../../chunk-OEGHKO5N.js';
7
+ import '../../chunk-FKBQRV4J.js';
8
+ import '../../chunk-4QROZZ5Z.js';
9
+ import '../../chunk-P43HBWKK.js';
10
10
  import '../../chunk-F3HNW354.js';
11
11
  import '../../chunk-K5GBV4SA.js';
12
12
  import '../../chunk-ZAP2BDHG.js';
@@ -1,12 +1,12 @@
1
- export { DeployConnector, createConnector2 as createConnector } from '../../chunk-PTS3QN5P.js';
1
+ export { DeployConnector, createConnector2 as createConnector } from '../../chunk-EEHOMCRU.js';
2
2
  import '../../chunk-ZNIHTT22.js';
3
3
  import '../../chunk-6E6PKKAD.js';
4
4
  import '../../chunk-IFGTRL2I.js';
5
- import '../../chunk-UQ3RJKDD.js';
6
- import '../../chunk-ZE2KEPE2.js';
7
- import '../../chunk-FB4GPWYC.js';
8
- import '../../chunk-DZM33LQO.js';
9
- import '../../chunk-63ZPKREA.js';
5
+ import '../../chunk-4O2RAXKJ.js';
6
+ import '../../chunk-OEGHKO5N.js';
7
+ import '../../chunk-FKBQRV4J.js';
8
+ import '../../chunk-4QROZZ5Z.js';
9
+ import '../../chunk-P43HBWKK.js';
10
10
  import '../../chunk-F3HNW354.js';
11
11
  import '../../chunk-K5GBV4SA.js';
12
12
  import '../../chunk-ZAP2BDHG.js';
@@ -1,12 +1,12 @@
1
- export { DevServerConnector, createConnector3 as createConnector } from '../../chunk-PTS3QN5P.js';
1
+ export { DevServerConnector, createConnector3 as createConnector } from '../../chunk-EEHOMCRU.js';
2
2
  import '../../chunk-ZNIHTT22.js';
3
3
  import '../../chunk-6E6PKKAD.js';
4
4
  import '../../chunk-IFGTRL2I.js';
5
- import '../../chunk-UQ3RJKDD.js';
6
- import '../../chunk-ZE2KEPE2.js';
7
- import '../../chunk-FB4GPWYC.js';
8
- import '../../chunk-DZM33LQO.js';
9
- import '../../chunk-63ZPKREA.js';
5
+ import '../../chunk-4O2RAXKJ.js';
6
+ import '../../chunk-OEGHKO5N.js';
7
+ import '../../chunk-FKBQRV4J.js';
8
+ import '../../chunk-4QROZZ5Z.js';
9
+ import '../../chunk-P43HBWKK.js';
10
10
  import '../../chunk-F3HNW354.js';
11
11
  import '../../chunk-K5GBV4SA.js';
12
12
  import '../../chunk-ZAP2BDHG.js';
@@ -10,17 +10,20 @@ keywords:
10
10
  ---
11
11
 
12
12
  The flow connector holds the live `FlowExecution` snapshot for one run and
13
- bridges three driving parties:
13
+ bridges three ownership roles:
14
14
 
15
15
  - **Agent** — drives nodes by calling tools (`start_node`, `request_approval`,
16
16
  `request_input`, `complete_node`, `skip_node`, `fail_node`, plus the
17
17
  read-only `get_state`, `get_globals`, `get_available`, `validate_node`,
18
18
  `build_handoff`).
19
- - **Host (runner)** — applies out-of-turn mutations through direct adapter
19
+ - **Runtime** — drains available `function` nodes through `NodeExecutor`, parks
20
+ available `gate` nodes through durable approval state, and drives available
21
+ `sub-flow` nodes inline before an agent turn is considered.
22
+ - **Host** — the runner applies out-of-turn mutations through direct adapter
20
23
  methods (`applyApproval`, `applyInput`, `retryNode`, `setAutonomousMode`,
21
- `cancel`, `hydrate`) in response to user actions on the platform side.
22
- - **Orchestrator** — subscribes via `onStateChange` and forwards
23
- `state_changed` events / kicks new turns after host-driven mutations.
24
+ `cancel`, `hydrate`) in response to platform actions, forwards persistence
25
+ snapshots through `onStateChange`, and serializes permitted agent turns via
26
+ `SessionStimulusBus`.
24
27
 
25
28
  Every state mutation runs through a single `mutate()` pipeline that clones
26
29
  the current snapshot, applies the change, recomputes derived fields via
@@ -33,23 +36,67 @@ declared in `skaile.yaml` — it is constructed by the runner per session
33
36
  and bound to the active `FlowDefinition`.
34
37
 
35
38
  The adapter normalizes authored definitions at its connect/start boundary.
36
- Strict v2 `run.kind: agent` nodes are active; among legacy definitions, only
37
- explicit `type: skill` nodes normalize into that active shape. A selected
38
- available or running agent receives its instruction, supplied bindings, asset
39
- requirements, and completed predecessor context through `build_handoff`.
39
+ Strict v2 `run.kind: agent`, `run.kind: function`, `run.kind: gate`, and
40
+ `run.kind: sub-flow` nodes are active. Among legacy definitions, explicit
41
+ `type: skill` nodes normalize into the agent shape and exact `type: sub-flow`
42
+ nodes with `data.flow` normalize into the active inline-child shape. A selected
43
+ available or running agent receives its instruction, resolved
44
+ bindings with origins, asset requirements, and completed predecessor
45
+ context through `build_handoff`. Functions receive resolved raw values as
46
+ environment variables while provenance remains on the executor request. They
47
+ inherit the session environment and run from the session workspace.
48
+ Configured stdout/stderr captures map only to `fields.<name>` output keys and
49
+ remain attached to both completed and failed node executions.
50
+
51
+ A first-class gate never enters the agent mutation surface and never calls
52
+ `NodeExecutor`. Admission parks it at `awaiting_approval` with `run.prompt` as
53
+ the initial summary. Approval completes it directly and unblocks successors;
54
+ rejection keeps the decided record and feedback parked, stimulates one revision
55
+ conversation, and lets the agent replace it with a fresh `request_approval`.
56
+ Autonomous mode does not bypass a first-class gate. The authored `run.schema`
57
+ remains part of the strict contract; richer free-text response transport is
58
+ tracked separately in [platform #2097](https://github.com/skaile-ai/platform/issues/2097).
59
+
60
+ An inline sub-flow is runtime-owned coordination. The host resolves the child
61
+ definition and creates a transient child `FlowAdapter` in the materialized
62
+ session, reusing the session driver for agent nodes, the existing `NodeExecutor`
63
+ for functions, and the same host approval/input operations for gates. Each parent
64
+ sub-flow node keeps its own transient child across parked/no-op turns. Agent
65
+ operations route only during that child's active turn; parent-scoped and
66
+ unrelated parent operations stay parent-owned. Child gate/input interactions are
67
+ projected onto the parent node and settled by its parent node ID, so the child
68
+ snapshot is never published. Child completion completes the parent node;
69
+ required failure fails it and optional failure skips it. `passContext: true`
70
+ merges parent run input before explicit node bindings, while the separate origin
71
+ map preserves agent-produced provenance. Inline sub-flows run once and own no run
72
+ group, loop, alternate executor, or new durable-state field.
73
+ Canonical child identities resolve inside host lookup roots; in-memory ancestry
74
+ rejects cycles and nesting deeper than 16 flow identities. Live hydrate cancels
75
+ transient children first. Cold hydrate returns a running or projected-waiting
76
+ sub-flow to admission and restarts it from the durable parent boundary.
77
+
78
+ The pure engine evaluates `contract.requires` before admission and reports failed
79
+ conditions separately from hard-edge blockers. Output schemas are enforced only
80
+ when another node reads the producer through a precondition, binding, or router.
81
+ The first invalid agent completion persists and publishes one correction request;
82
+ the second fails. Function output fails directly, with captured diagnostics kept.
83
+ Valid JSON-object fields are cloned before storage. Structural field errors enter
84
+ the correction lifecycle only for consumed producers; malformed fields on an
85
+ unconsumed prose node are omitted. `connect` and `hydrate` clone incoming snapshots
86
+ and atomically reject invalid complete output for a consumed producer.
40
87
 
41
88
  ## Operations
42
89
 
43
90
  | Operation | Access | Description |
44
91
  |-----------|--------|-------------|
45
- | `get_available` | read | Node IDs ready to run |
92
+ | `get_available` | read | Agent node IDs ready for an agent turn |
46
93
  | `get_state` | read | Full flow execution snapshot |
47
94
  | `get_globals` | read | Run-scoped flow globals (`run_input` etc.) |
48
- | `validate_node` | read | Is this node currently runnable |
49
- | `build_handoff` | read | Selected agent instruction, bindings, assets, and upstream context |
95
+ | `validate_node` | read | Is this node currently runnable, including failed preconditions |
96
+ | `build_handoff` | read | Selected agent instruction, resolved bindings/origins, correction issues, assets, and upstream context |
50
97
  | `start_node` | write | Mark a node `running` |
51
- | `request_approval` | write | Pause for human sign-off |
98
+ | `request_approval` | write | Pause a running agent node, or re-request a rejected first-class gate, for human sign-off |
52
99
  | `request_input` | write | Pause for typed input |
53
- | `complete_node` | write | Finalise a node with output |
100
+ | `complete_node` | write | Finalise a node with optional JSON fields; consumed schemas get one agent correction |
54
101
  | `skip_node` | write | Skip an optional node |
55
102
  | `fail_node` | write | Mark a node failed (recoverable or not) |