@skaile/workspaces 5.1.0 → 5.1.2

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 (112) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +5 -4
  3. package/dist/{asset-feeds-TU5CS6QL.js → asset-feeds-EVS3WPWS.js} +4 -4
  4. package/dist/{asset-feeds-TU5CS6QL.js.map → asset-feeds-EVS3WPWS.js.map} +1 -1
  5. package/dist/asset-manager/index.js +1 -1
  6. package/dist/{chunk-JUXQUZOQ.js → chunk-37FTLYFP.js} +26 -3
  7. package/dist/chunk-37FTLYFP.js.map +1 -0
  8. package/dist/{chunk-E3ZACBHD.js → chunk-52PFJLBJ.js} +3 -3
  9. package/dist/{chunk-E3ZACBHD.js.map → chunk-52PFJLBJ.js.map} +1 -1
  10. package/dist/{chunk-3NGPZC44.js → chunk-56IWSMSD.js} +6 -6
  11. package/dist/{chunk-3NGPZC44.js.map → chunk-56IWSMSD.js.map} +1 -1
  12. package/dist/{chunk-X6E7Y4JD.js → chunk-6CSSFLGC.js} +6 -6
  13. package/dist/{chunk-X6E7Y4JD.js.map → chunk-6CSSFLGC.js.map} +1 -1
  14. package/dist/{chunk-AYNPGPT5.js → chunk-CJB5HUY6.js} +3 -3
  15. package/dist/{chunk-AYNPGPT5.js.map → chunk-CJB5HUY6.js.map} +1 -1
  16. package/dist/{chunk-G47EV3V6.js → chunk-CXGHL75R.js} +2 -2
  17. package/dist/{chunk-G47EV3V6.js.map → chunk-CXGHL75R.js.map} +1 -1
  18. package/dist/{chunk-CI6FQ654.js → chunk-KDH74UWB.js} +3 -3
  19. package/dist/{chunk-CI6FQ654.js.map → chunk-KDH74UWB.js.map} +1 -1
  20. package/dist/{chunk-QFZFZXQW.js → chunk-N2X7DK2S.js} +27 -8
  21. package/dist/chunk-N2X7DK2S.js.map +1 -0
  22. package/dist/{chunk-2Y6DSR36.js → chunk-TB6GDL6Q.js} +3 -3
  23. package/dist/{chunk-2Y6DSR36.js.map → chunk-TB6GDL6Q.js.map} +1 -1
  24. package/dist/{chunk-G4T7MYTA.js → chunk-THPQ6J3U.js} +3 -3
  25. package/dist/{chunk-G4T7MYTA.js.map → chunk-THPQ6J3U.js.map} +1 -1
  26. package/dist/{chunk-IYIIT4R3.js → chunk-UO5CWEHZ.js} +3 -3
  27. package/dist/{chunk-IYIIT4R3.js.map → chunk-UO5CWEHZ.js.map} +1 -1
  28. package/dist/{chunk-55RMUF4G.js → chunk-VFAJZE45.js} +89 -13
  29. package/dist/chunk-VFAJZE45.js.map +1 -0
  30. package/dist/{chunk-3KSAFYD4.js → chunk-X6IELFVB.js} +3 -3
  31. package/dist/{chunk-3KSAFYD4.js.map → chunk-X6IELFVB.js.map} +1 -1
  32. package/dist/{chunk-6LDUA57J.js → chunk-YJACHPI7.js} +2 -2
  33. package/dist/{chunk-6LDUA57J.js.map → chunk-YJACHPI7.js.map} +1 -1
  34. package/dist/{chunk-AOMWF2OE.js → chunk-ZMMFBID4.js} +3 -3
  35. package/dist/{chunk-AOMWF2OE.js.map → chunk-ZMMFBID4.js.map} +1 -1
  36. package/dist/cli/index.js +33 -33
  37. package/dist/connectors/index.js +2 -2
  38. package/dist/{connectors-VX7YRFFS.js → connectors-KSVPVYCA.js} +5 -5
  39. package/dist/{connectors-VX7YRFFS.js.map → connectors-KSVPVYCA.js.map} +1 -1
  40. package/dist/{ensure-sources-2XQS32WI.js → ensure-sources-KVV72WRP.js} +4 -4
  41. package/dist/{ensure-sources-2XQS32WI.js.map → ensure-sources-KVV72WRP.js.map} +1 -1
  42. package/dist/factory-assets/connectors/box.js +2 -2
  43. package/dist/factory-assets/connectors/deploy.js +2 -2
  44. package/dist/factory-assets/connectors/devserver.js +2 -2
  45. package/dist/factory-assets/connectors/flow/adapter.d.ts +3 -1
  46. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  47. package/dist/factory-assets/connectors/flow/adapter.js +2 -2
  48. package/dist/factory-assets/connectors/flow/contract/index.d.ts +1 -1
  49. package/dist/factory-assets/connectors/flow/contract/index.d.ts.map +1 -1
  50. package/dist/factory-assets/connectors/flow/contract/sub-flow-output.d.ts +20 -0
  51. package/dist/factory-assets/connectors/flow/contract/sub-flow-output.d.ts.map +1 -1
  52. package/dist/factory-assets/connectors/flow/contract.js +1 -1
  53. package/dist/factory-assets/connectors/flow/index.d.ts +1 -0
  54. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
  55. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts.map +1 -1
  56. package/dist/factory-assets/connectors/flow/run-flow.js +3 -3
  57. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts +8 -0
  58. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts.map +1 -1
  59. package/dist/factory-assets/connectors/flow.js +2 -2
  60. package/dist/factory-assets/connectors/git.js +2 -2
  61. package/dist/factory-assets/connectors/gmail.js +2 -2
  62. package/dist/factory-assets/connectors/googledrive.js +2 -2
  63. package/dist/factory-assets/connectors/local.js +2 -2
  64. package/dist/factory-assets/connectors/mattermost.js +2 -2
  65. package/dist/factory-assets/connectors/memory.js +2 -2
  66. package/dist/factory-assets/connectors/minio.js +2 -2
  67. package/dist/factory-assets/connectors/postgres.js +2 -2
  68. package/dist/factory-assets/connectors/s3.js +2 -2
  69. package/dist/factory-assets/connectors/sharepoint.js +2 -2
  70. package/dist/factory-assets/connectors/sqlite.js +2 -2
  71. package/dist/factory-assets/connectors/static-server.js +2 -2
  72. package/dist/factory-assets/connectors/tunnel.js +2 -2
  73. package/dist/factory-assets/connectors/webdav.js +2 -2
  74. package/dist/factory-assets/connectors/xstate-store.js +2 -2
  75. package/dist/factory-assets/connectors/xstate.js +2 -2
  76. package/dist/{helpers-IELQGVGB.js → helpers-4NT7UX6I.js} +4 -4
  77. package/dist/{helpers-IELQGVGB.js.map → helpers-4NT7UX6I.js.map} +1 -1
  78. package/dist/{library-publish-TCFU3X5L.js → library-publish-GHIWWEEY.js} +7 -7
  79. package/dist/{library-publish-TCFU3X5L.js.map → library-publish-GHIWWEEY.js.map} +1 -1
  80. package/dist/{open-library-SSBN4FX2.js → open-library-XKWTUYU2.js} +5 -5
  81. package/dist/{open-library-SSBN4FX2.js.map → open-library-XKWTUYU2.js.map} +1 -1
  82. package/dist/{project-PJ37PM6N.js → project-P2QS3GNG.js} +5 -5
  83. package/dist/{project-PJ37PM6N.js.map → project-P2QS3GNG.js.map} +1 -1
  84. package/dist/runner/index.js +7 -7
  85. package/dist/runner/src/external-mcp.d.ts +9 -1
  86. package/dist/runner/src/external-mcp.d.ts.map +1 -1
  87. package/dist/runner/src/late-mcp-rebuild.d.ts +39 -0
  88. package/dist/runner/src/late-mcp-rebuild.d.ts.map +1 -0
  89. package/dist/runner/src/reply-routing.d.ts +8 -0
  90. package/dist/runner/src/reply-routing.d.ts.map +1 -1
  91. package/dist/runner/src/resources.d.ts +8 -0
  92. package/dist/runner/src/resources.d.ts.map +1 -1
  93. package/dist/runner/src/serve.d.ts.map +1 -1
  94. package/dist/runner/src/session-builder.d.ts +7 -0
  95. package/dist/runner/src/session-builder.d.ts.map +1 -1
  96. package/dist/sdk/asset-manager.js +1 -1
  97. package/dist/sdk/index.js +7 -7
  98. package/dist/sdk/runner.js +7 -7
  99. package/dist/{setup-JW2ZGCUG.js → setup-RVP74D37.js} +5 -5
  100. package/dist/{setup-JW2ZGCUG.js.map → setup-RVP74D37.js.map} +1 -1
  101. package/dist/{source-F2VO32W6.js → source-VBROLEFB.js} +6 -6
  102. package/dist/{source-F2VO32W6.js.map → source-VBROLEFB.js.map} +1 -1
  103. package/dist/{source-manifest-publish-AXNII2J4.js → source-manifest-publish-7XDLJRLX.js} +8 -8
  104. package/dist/{source-manifest-publish-AXNII2J4.js.map → source-manifest-publish-7XDLJRLX.js.map} +1 -1
  105. package/dist/tui/index.js +7 -7
  106. package/dist/workspace-plugin/adapters/mcp.js +4 -4
  107. package/dist/workspace-plugin/adapters/omp.js +7 -7
  108. package/dist/workspace-plugin/index.js +1 -1
  109. package/package.json +1 -1
  110. package/dist/chunk-55RMUF4G.js.map +0 -1
  111. package/dist/chunk-JUXQUZOQ.js.map +0 -1
  112. package/dist/chunk-QFZFZXQW.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { err, okJson, ok } from './chunk-X5YPJV4N.js';
2
- import { buildConnectorListPayload } from './chunk-QFZFZXQW.js';
2
+ import { buildConnectorListPayload } from './chunk-N2X7DK2S.js';
3
3
  import { readFile } from 'fs/promises';
4
4
  import { join } from 'path';
5
5
 
@@ -117,5 +117,5 @@ async function connectorDescribe(manager, id) {
117
117
  }
118
118
 
119
119
  export { connectorDescribe, connectorExec, connectorList, connectorLoadSkill, connectorRead, connectorSearch, connectorWrite, mountList, mountRead, mountStatus, mountSync };
120
- //# sourceMappingURL=chunk-AOMWF2OE.js.map
121
- //# sourceMappingURL=chunk-AOMWF2OE.js.map
120
+ //# sourceMappingURL=chunk-ZMMFBID4.js.map
121
+ //# sourceMappingURL=chunk-ZMMFBID4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../workspace-plugin/src/tools/connectors.ts"],"names":[],"mappings":"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","file":"chunk-AOMWF2OE.js","sourcesContent":["// src/tools/connectors.ts\nimport { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { buildConnectorListPayload, type ConnectorManager } from \"@skaile/workspaces/connectors\";\nimport type { ToolResult } from \"../types.js\";\nimport { err, ok, okJson } from \"../types.js\";\n\n// ── Mountable-connector helpers ──────────────────────────────────────────────\n//\n// The unified ConnectorManager owns mountable (filesystem-face) connectors too.\n// A connector is mountable when its `listConnectors()` summary carries a\n// `mountPath`. The `mount*` helpers below project that subset for the legacy\n// `mount_*` tool surface.\n\n/**\n * A connector summary that carries a projected filesystem path. Unlike the raw\n * `listConnectors()` summary, `mountPath` is non-optional here — `listMountable()`\n * runtime-filters to exactly those entries before narrowing to this type.\n */\ntype MountableConnector = ReturnType<ConnectorManager[\"listConnectors\"]>[number] & {\n mountPath: string;\n};\n\n/** Return the mountable (filesystem-face) connectors from a manager. */\nfunction listMountable(manager: ConnectorManager): MountableConnector[] {\n return manager\n .listConnectors()\n .filter((c): c is MountableConnector => typeof c.mountPath === \"string\");\n}\n\n/**\n * A mountable connector as reported to the agent, with an optional `reason`.\n *\n * A fleet-managed mount whose path is gone reports `status: \"error\"` plus a\n * `reason`, even though the connector handle still reads `connected`. One whose\n * probe timed out keeps its cached status and gains a `reason` saying it is\n * unverified: a slow cloud mount is not reported dead.\n */\ntype MountView = MountableConnector & { reason?: string };\n\n/** Overlay a live re-check on the cached connect-time status where one applies. */\nasync function withLiveness(\n manager: ConnectorManager,\n mount: MountableConnector,\n): Promise<MountView> {\n // Optional call: the tool tests' manager doubles omit the method.\n const liveness = await manager.checkMountLiveness?.(mount.id);\n if (!liveness || liveness.state === \"live\") return mount;\n if (liveness.state === \"dead\") return { ...mount, status: \"error\", reason: liveness.reason };\n return { ...mount, reason: liveness.reason };\n}\n\n/**\n * List all mountable (filesystem-face) connectors declared in `skaile.yaml`\n * with their current mount status.\n *\n * @param manager - Active `ConnectorManager` or `null` when not configured.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function mountList(manager: ConnectorManager | null): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n return okJson(await Promise.all(listMountable(manager).map((m) => withLiveness(manager, m))));\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Sync a mountable connector — pull the latest content from its remote source.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param mountId - Connector ID declared in `skaile.yaml`.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function mountSync(\n manager: ConnectorManager | null,\n mountId: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const result = await manager.sync(mountId);\n return okJson(result);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Get the current status and metadata for a single mountable connector.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param mountId - Connector ID declared in `skaile.yaml`.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function mountStatus(\n manager: ConnectorManager | null,\n mountId: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const mount = listMountable(manager).find((v) => v.id === mountId);\n if (!mount) return err(`Mount not found: \"${mountId}\"`);\n return okJson(await withLiveness(manager, mount));\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Read a file from within a mountable connector's projected directory by its\n * relative path.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param mountId - Connector ID declared in `skaile.yaml`.\n * @param filePath - Relative path within the projected mount directory.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function mountRead(\n manager: ConnectorManager | null,\n mountId: string,\n filePath: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const mount = listMountable(manager).find((v) => v.id === mountId);\n if (!mount) return err(`Mount not found: \"${mountId}\"`);\n const content = await readFile(join(mount.mountPath, filePath), \"utf-8\");\n return ok(content);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * List all connectors registered with the `ConnectorManager`.\n *\n * Returns `{ connected, failed }` — `connected` from `manager.listConnectors()`,\n * `failed` from `manager.listFailedConnectors()`. A connector that threw during\n * `connect()` never enters the active map, so it is absent from the first list\n * entirely; without the second one an agent driven through MCP or OMP has no\n * way to learn that a mount it is about to write into is dead. Returns an error\n * result when no manager is configured (i.e. `skaile.yaml` has no `connectors`\n * section).\n *\n * @param manager - Active `ConnectorManager` or `null` when not configured.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorList(manager: ConnectorManager | null): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n // Same payload as the Claude SDK tool: per-mount health and a notice when one is not ok.\n return okJson(await buildConnectorListPayload(manager));\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Read content from a connector at the given path.\n *\n * Delegates to `manager.read(id, path)`. Returns an error result when the\n * path yields `null` (not found) or the manager is absent.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n * @param path - Resource path within the connector (connector-specific format).\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorRead(\n manager: ConnectorManager | null,\n id: string,\n path: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const content = await manager.read(id, path);\n if (content === null) return err(`No content at path \"${path}\" in connector \"${id}\"`);\n return okJson(content);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Write string content to a connector at the given path.\n *\n * Delegates to `manager.write(id, path, { data: content })`.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n * @param path - Destination path within the connector.\n * @param content - String payload to write.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorWrite(\n manager: ConnectorManager | null,\n id: string,\n path: string,\n content: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n await manager.write(id, path, { data: content });\n return ok(`Written to \"${path}\" in connector \"${id}\"`);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Search a connector's data using a query string.\n *\n * Delegates to `manager.search(id, query)` and returns the result set as JSON.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n * @param query - Free-text or structured query (connector-specific format).\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorSearch(\n manager: ConnectorManager | null,\n id: string,\n query: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const results = await manager.search(id, query);\n return okJson(results);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Execute a named operation on a connector.\n *\n * Delegates to `manager.executeOp(id, operation, args)`. Operations and\n * their argument shapes are connector-specific; use {@link connectorDescribe}\n * to discover what operations a connector supports.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n * @param operation - Operation name (from the connector's `RuntimeSkillDescriptor`).\n * @param args - Named arguments for the operation.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorExec(\n manager: ConnectorManager | null,\n id: string,\n operation: string,\n args: Record<string, unknown>,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const result = await manager.executeOp(id, operation, args);\n return ok(result);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Load the rendered skill body for a connector.\n *\n * Delegates to `manager.loadSkill(id)` and returns the skill content as\n * plain text. Useful when the agent needs the connector's operations and\n * usage instructions injected as prompt context.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorLoadSkill(\n manager: ConnectorManager | null,\n id: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const skill = manager.loadSkill(id);\n return ok(skill);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Describe a connector's capabilities via its `RuntimeSkillDescriptor`.\n *\n * Finds the matching skill descriptor from `manager.listSkills()` and returns\n * it as JSON. The descriptor includes the connector's operations, argument\n * shapes, and usage instructions.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorDescribe(\n manager: ConnectorManager | null,\n id: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const skills = manager.listSkills();\n const descriptor = skills.find((s) => s.id === id);\n if (!descriptor) return err(`No skill descriptor for connector \"${id}\"`);\n return okJson(descriptor);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n"]}
1
+ {"version":3,"sources":["../workspace-plugin/src/tools/connectors.ts"],"names":[],"mappings":";;;;;AAwBA,SAAS,cAAc,OAAA,EAAiD;AACtE,EAAA,OAAO,OAAA,CACJ,gBAAe,CACf,MAAA,CAAO,CAAC,CAAA,KAA+B,OAAO,CAAA,CAAE,SAAA,KAAc,QAAQ,CAAA;AAC3E;AAaA,eAAe,YAAA,CACb,SACA,KAAA,EACoB;AAEpB,EAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,kBAAA,GAAqB,MAAM,EAAE,CAAA;AAC5D,EAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,KAAA,KAAU,QAAQ,OAAO,KAAA;AACnD,EAAA,IAAI,QAAA,CAAS,KAAA,KAAU,MAAA,EAAQ,OAAO,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,QAAA,CAAS,MAAA,EAAO;AAC3F,EAAA,OAAO,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQ,SAAS,MAAA,EAAO;AAC7C;AAUA,eAAsB,UAAU,OAAA,EAAuD;AACrF,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AACF,IAAA,OAAO,MAAA,CAAO,MAAM,OAAA,CAAQ,GAAA,CAAI,cAAc,OAAO,CAAA,CAAE,GAAA,CAAI,CAAC,MAAM,YAAA,CAAa,OAAA,EAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,EAC9F,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF;AAUA,eAAsB,SAAA,CACpB,SACA,OAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA;AACzC,IAAA,OAAO,OAAO,MAAM,CAAA;AAAA,EACtB,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF;AAUA,eAAsB,WAAA,CACpB,SACA,OAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,cAAc,OAAO,CAAA,CAAE,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,OAAO,CAAA;AACjE,IAAA,IAAI,CAAC,KAAA,EAAO,OAAO,GAAA,CAAI,CAAA,kBAAA,EAAqB,OAAO,CAAA,CAAA,CAAG,CAAA;AACtD,IAAA,OAAO,MAAA,CAAO,MAAM,YAAA,CAAa,OAAA,EAAS,KAAK,CAAC,CAAA;AAAA,EAClD,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF;AAYA,eAAsB,SAAA,CACpB,OAAA,EACA,OAAA,EACA,QAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,cAAc,OAAO,CAAA,CAAE,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,OAAO,CAAA;AACjE,IAAA,IAAI,CAAC,KAAA,EAAO,OAAO,GAAA,CAAI,CAAA,kBAAA,EAAqB,OAAO,CAAA,CAAA,CAAG,CAAA;AACtD,IAAA,MAAM,OAAA,GAAU,MAAM,QAAA,CAAS,IAAA,CAAK,MAAM,SAAA,EAAW,QAAQ,GAAG,OAAO,CAAA;AACvE,IAAA,OAAO,GAAG,OAAO,CAAA;AAAA,EACnB,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF;AAiBA,eAAsB,cAAc,OAAA,EAAuD;AACzF,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AAEF,IAAA,OAAO,MAAA,CAAO,MAAM,yBAAA,CAA0B,OAAO,CAAC,CAAA;AAAA,EACxD,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF;AAcA,eAAsB,aAAA,CACpB,OAAA,EACA,EAAA,EACA,IAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,IAAA,CAAK,IAAI,IAAI,CAAA;AAC3C,IAAA,IAAI,OAAA,KAAY,MAAM,OAAO,GAAA,CAAI,uBAAuB,IAAI,CAAA,gBAAA,EAAmB,EAAE,CAAA,CAAA,CAAG,CAAA;AACpF,IAAA,OAAO,OAAO,OAAO,CAAA;AAAA,EACvB,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF;AAcA,eAAsB,cAAA,CACpB,OAAA,EACA,EAAA,EACA,IAAA,EACA,OAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,QAAQ,KAAA,CAAM,EAAA,EAAI,MAAM,EAAE,IAAA,EAAM,SAAS,CAAA;AAC/C,IAAA,OAAO,EAAA,CAAG,CAAA,YAAA,EAAe,IAAI,CAAA,gBAAA,EAAmB,EAAE,CAAA,CAAA,CAAG,CAAA;AAAA,EACvD,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF;AAaA,eAAsB,eAAA,CACpB,OAAA,EACA,EAAA,EACA,KAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,KAAK,CAAA;AAC9C,IAAA,OAAO,OAAO,OAAO,CAAA;AAAA,EACvB,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF;AAgBA,eAAsB,aAAA,CACpB,OAAA,EACA,EAAA,EACA,SAAA,EACA,IAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,SAAS,MAAM,OAAA,CAAQ,SAAA,CAAU,EAAA,EAAI,WAAW,IAAI,CAAA;AAC1D,IAAA,OAAO,GAAG,MAAM,CAAA;AAAA,EAClB,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF;AAcA,eAAsB,kBAAA,CACpB,SACA,EAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,SAAA,CAAU,EAAE,CAAA;AAClC,IAAA,OAAO,GAAG,KAAK,CAAA;AAAA,EACjB,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF;AAcA,eAAsB,iBAAA,CACpB,SACA,EAAA,EACqB;AACrB,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,GAAA,CAAI,yCAAyC,CAAA;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,QAAQ,UAAA,EAAW;AAClC,IAAA,MAAM,aAAa,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AACjD,IAAA,IAAI,CAAC,UAAA,EAAY,OAAO,GAAA,CAAI,CAAA,mCAAA,EAAsC,EAAE,CAAA,CAAA,CAAG,CAAA;AACvE,IAAA,OAAO,OAAO,UAAU,CAAA;AAAA,EAC1B,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,IAAI,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACF","file":"chunk-ZMMFBID4.js","sourcesContent":["// src/tools/connectors.ts\nimport { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { buildConnectorListPayload, type ConnectorManager } from \"@skaile/workspaces/connectors\";\nimport type { ToolResult } from \"../types.js\";\nimport { err, ok, okJson } from \"../types.js\";\n\n// ── Mountable-connector helpers ──────────────────────────────────────────────\n//\n// The unified ConnectorManager owns mountable (filesystem-face) connectors too.\n// A connector is mountable when its `listConnectors()` summary carries a\n// `mountPath`. The `mount*` helpers below project that subset for the legacy\n// `mount_*` tool surface.\n\n/**\n * A connector summary that carries a projected filesystem path. Unlike the raw\n * `listConnectors()` summary, `mountPath` is non-optional here — `listMountable()`\n * runtime-filters to exactly those entries before narrowing to this type.\n */\ntype MountableConnector = ReturnType<ConnectorManager[\"listConnectors\"]>[number] & {\n mountPath: string;\n};\n\n/** Return the mountable (filesystem-face) connectors from a manager. */\nfunction listMountable(manager: ConnectorManager): MountableConnector[] {\n return manager\n .listConnectors()\n .filter((c): c is MountableConnector => typeof c.mountPath === \"string\");\n}\n\n/**\n * A mountable connector as reported to the agent, with an optional `reason`.\n *\n * A fleet-managed mount whose path is gone reports `status: \"error\"` plus a\n * `reason`, even though the connector handle still reads `connected`. One whose\n * probe timed out keeps its cached status and gains a `reason` saying it is\n * unverified: a slow cloud mount is not reported dead.\n */\ntype MountView = MountableConnector & { reason?: string };\n\n/** Overlay a live re-check on the cached connect-time status where one applies. */\nasync function withLiveness(\n manager: ConnectorManager,\n mount: MountableConnector,\n): Promise<MountView> {\n // Optional call: the tool tests' manager doubles omit the method.\n const liveness = await manager.checkMountLiveness?.(mount.id);\n if (!liveness || liveness.state === \"live\") return mount;\n if (liveness.state === \"dead\") return { ...mount, status: \"error\", reason: liveness.reason };\n return { ...mount, reason: liveness.reason };\n}\n\n/**\n * List all mountable (filesystem-face) connectors declared in `skaile.yaml`\n * with their current mount status.\n *\n * @param manager - Active `ConnectorManager` or `null` when not configured.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function mountList(manager: ConnectorManager | null): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n return okJson(await Promise.all(listMountable(manager).map((m) => withLiveness(manager, m))));\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Sync a mountable connector — pull the latest content from its remote source.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param mountId - Connector ID declared in `skaile.yaml`.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function mountSync(\n manager: ConnectorManager | null,\n mountId: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const result = await manager.sync(mountId);\n return okJson(result);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Get the current status and metadata for a single mountable connector.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param mountId - Connector ID declared in `skaile.yaml`.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function mountStatus(\n manager: ConnectorManager | null,\n mountId: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const mount = listMountable(manager).find((v) => v.id === mountId);\n if (!mount) return err(`Mount not found: \"${mountId}\"`);\n return okJson(await withLiveness(manager, mount));\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Read a file from within a mountable connector's projected directory by its\n * relative path.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param mountId - Connector ID declared in `skaile.yaml`.\n * @param filePath - Relative path within the projected mount directory.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function mountRead(\n manager: ConnectorManager | null,\n mountId: string,\n filePath: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const mount = listMountable(manager).find((v) => v.id === mountId);\n if (!mount) return err(`Mount not found: \"${mountId}\"`);\n const content = await readFile(join(mount.mountPath, filePath), \"utf-8\");\n return ok(content);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * List all connectors registered with the `ConnectorManager`.\n *\n * Returns `{ connected, failed }` — `connected` from `manager.listConnectors()`,\n * `failed` from `manager.listFailedConnectors()`. A connector that threw during\n * `connect()` never enters the active map, so it is absent from the first list\n * entirely; without the second one an agent driven through MCP or OMP has no\n * way to learn that a mount it is about to write into is dead. Returns an error\n * result when no manager is configured (i.e. `skaile.yaml` has no `connectors`\n * section).\n *\n * @param manager - Active `ConnectorManager` or `null` when not configured.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorList(manager: ConnectorManager | null): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n // Same payload as the Claude SDK tool: per-mount health and a notice when one is not ok.\n return okJson(await buildConnectorListPayload(manager));\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Read content from a connector at the given path.\n *\n * Delegates to `manager.read(id, path)`. Returns an error result when the\n * path yields `null` (not found) or the manager is absent.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n * @param path - Resource path within the connector (connector-specific format).\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorRead(\n manager: ConnectorManager | null,\n id: string,\n path: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const content = await manager.read(id, path);\n if (content === null) return err(`No content at path \"${path}\" in connector \"${id}\"`);\n return okJson(content);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Write string content to a connector at the given path.\n *\n * Delegates to `manager.write(id, path, { data: content })`.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n * @param path - Destination path within the connector.\n * @param content - String payload to write.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorWrite(\n manager: ConnectorManager | null,\n id: string,\n path: string,\n content: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n await manager.write(id, path, { data: content });\n return ok(`Written to \"${path}\" in connector \"${id}\"`);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Search a connector's data using a query string.\n *\n * Delegates to `manager.search(id, query)` and returns the result set as JSON.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n * @param query - Free-text or structured query (connector-specific format).\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorSearch(\n manager: ConnectorManager | null,\n id: string,\n query: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const results = await manager.search(id, query);\n return okJson(results);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Execute a named operation on a connector.\n *\n * Delegates to `manager.executeOp(id, operation, args)`. Operations and\n * their argument shapes are connector-specific; use {@link connectorDescribe}\n * to discover what operations a connector supports.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n * @param operation - Operation name (from the connector's `RuntimeSkillDescriptor`).\n * @param args - Named arguments for the operation.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorExec(\n manager: ConnectorManager | null,\n id: string,\n operation: string,\n args: Record<string, unknown>,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const result = await manager.executeOp(id, operation, args);\n return ok(result);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Load the rendered skill body for a connector.\n *\n * Delegates to `manager.loadSkill(id)` and returns the skill content as\n * plain text. Useful when the agent needs the connector's operations and\n * usage instructions injected as prompt context.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorLoadSkill(\n manager: ConnectorManager | null,\n id: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const skill = manager.loadSkill(id);\n return ok(skill);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Describe a connector's capabilities via its `RuntimeSkillDescriptor`.\n *\n * Finds the matching skill descriptor from `manager.listSkills()` and returns\n * it as JSON. The descriptor includes the connector's operations, argument\n * shapes, and usage instructions.\n *\n * @param manager - Active `ConnectorManager` or `null`.\n * @param id - Connector ID declared in `skaile.yaml`.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function connectorDescribe(\n manager: ConnectorManager | null,\n id: string,\n): Promise<ToolResult> {\n if (!manager) return err(\"No connectors configured in skaile.yaml\");\n try {\n const skills = manager.listSkills();\n const descriptor = skills.find((s) => s.id === id);\n if (!descriptor) return err(`No skill descriptor for connector \"${id}\"`);\n return okJson(descriptor);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n"]}
package/dist/cli/index.js CHANGED
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env node
2
- import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError } from '../chunk-IYIIT4R3.js';
3
- import { makeSourceCommand, syncProjectSources } from '../chunk-X6E7Y4JD.js';
2
+ import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError } from '../chunk-UO5CWEHZ.js';
3
+ import { makeSourceCommand, syncProjectSources } from '../chunk-6CSSFLGC.js';
4
4
  import { AI_RESOURCES } from '../chunk-YMOZC2D3.js';
5
5
  import { upsertManifestAsset, resolveImportSource, normalizeSkillContent, missingRootAssets, pruneMissingRootAssets } from '../chunk-F7JHP7JV.js';
6
- import { getStoreConfig, storeFetch, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, isStoreAuthenticated, getStoreToken, getStoreIdentity, refFor, assetEntryRef } from '../chunk-3KSAFYD4.js';
7
- import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportInstalledSoftDeps } from '../chunk-3NGPZC44.js';
8
- import { openCatalogSource, openLibraryManager, openLibrary } from '../chunk-E3ZACBHD.js';
9
- import { logErr, S, logOk, logInfo, logWarn, TARGET_DEFAULT_HINT, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-2Y6DSR36.js';
6
+ import { getStoreConfig, storeFetch, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, isStoreAuthenticated, getStoreToken, getStoreIdentity, refFor, assetEntryRef } from '../chunk-X6IELFVB.js';
7
+ import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportInstalledSoftDeps } from '../chunk-56IWSMSD.js';
8
+ import { openCatalogSource, openLibraryManager, openLibrary } from '../chunk-52PFJLBJ.js';
9
+ import { logErr, S, logOk, logInfo, logWarn, TARGET_DEFAULT_HINT, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-TB6GDL6Q.js';
10
10
  import { createFullRegistry } from '../chunk-XUQBVK4R.js';
11
11
  import { LocalSecretsProvider } from '../chunk-EB6OPURC.js';
12
- import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-55RMUF4G.js';
13
- import { buildClaudePluginFiles } from '../chunk-G47EV3V6.js';
14
- import '../chunk-AYNPGPT5.js';
12
+ import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-VFAJZE45.js';
13
+ import { buildClaudePluginFiles } from '../chunk-CXGHL75R.js';
14
+ import '../chunk-CJB5HUY6.js';
15
15
  import '../chunk-RNNUYFFD.js';
16
16
  import '../chunk-R6O6YWU7.js';
17
17
  import '../chunk-WCQMXBO5.js';
18
18
  import '../chunk-TYUJB336.js';
19
19
  import '../chunk-4ZTPYIBE.js';
20
- import '../chunk-AOMWF2OE.js';
20
+ import '../chunk-ZMMFBID4.js';
21
21
  import '../chunk-X5YPJV4N.js';
22
22
  import '../chunk-O7SG5PC2.js';
23
23
  import '../chunk-7QBNJTTQ.js';
@@ -26,12 +26,12 @@ import '../chunk-5LKOAX7I.js';
26
26
  import '../chunk-32NA4TVC.js';
27
27
  import '../chunk-W3UDISS2.js';
28
28
  import '../chunk-HCYS7GFP.js';
29
- import { runFlow, resumeFlow } from '../chunk-G4T7MYTA.js';
29
+ import { runFlow, resumeFlow } from '../chunk-THPQ6J3U.js';
30
30
  import '../chunk-4R6DROGN.js';
31
31
  import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-YV4J7V53.js';
32
32
  import '../chunk-VDJKWKH2.js';
33
33
  import '../chunk-CT6NQSA4.js';
34
- import '../chunk-QFZFZXQW.js';
34
+ import '../chunk-N2X7DK2S.js';
35
35
  import '../chunk-KC3OF6B2.js';
36
36
  import '../chunk-WKIOWDLQ.js';
37
37
  import '../chunk-YIVB7GIP.js';
@@ -46,13 +46,13 @@ import { getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-RDTHJSGY.js';
46
46
  import '../chunk-6E6PKKAD.js';
47
47
  import '../chunk-IFGTRL2I.js';
48
48
  import { projectAiAssetsRoots, loadFlow, loadAllFlowEntries, findFlowFileInRoots } from '../chunk-UMSWQKCY.js';
49
- import '../chunk-JUXQUZOQ.js';
49
+ import '../chunk-37FTLYFP.js';
50
50
  import '../chunk-QZLWJETK.js';
51
51
  import '../chunk-XUUYAS3Z.js';
52
52
  import { nodeLabel, nodeSkillAsset, nodeIsInert, nodeIsOptional, nodeRunKind, flowSkillVersionPins } from '../chunk-NFGRW3L7.js';
53
53
  import '../chunk-QCI6D7E4.js';
54
54
  import '../chunk-IDEA6CYI.js';
55
- import { AssetManager, NON_DEPLOYABLE_KINDS, MissingManifestError, parseRefTolerant, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-6LDUA57J.js';
55
+ import { AssetManager, NON_DEPLOYABLE_KINDS, MissingManifestError, parseRefTolerant, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-YJACHPI7.js';
56
56
  import { cloneOrInitGitRepo, ensureGitRepo, isGitRepo, getStoreManifestsDir, getDefaultValue, isSecretPlaceholder } from '../chunk-SP47UJKE.js';
57
57
  import '../chunk-UVOJSWD2.js';
58
58
  import '../chunk-H4EGUQ7M.js';
@@ -144,7 +144,7 @@ async function runSearch(kind, query, opts) {
144
144
  }
145
145
  }
146
146
  async function searchIndex(query, kind) {
147
- const { openLibrary: openLibrary2 } = await import('../open-library-SSBN4FX2.js');
147
+ const { openLibrary: openLibrary2 } = await import('../open-library-XKWTUYU2.js');
148
148
  const library = await openLibrary2();
149
149
  try {
150
150
  const defs = await library.listAssetDefs(kind ? { kind } : {});
@@ -197,7 +197,7 @@ async function searchLocal(query, kind, opts, showStore, airGapped) {
197
197
  const factory = await searchFactory(projectDir, query, kind);
198
198
  let entries = unionEntries(await searchIndex(query, kind), factory);
199
199
  if (entries.length === 0 && !query && !kind && !airGapped) {
200
- const { autoSyncForSearch } = await import('../source-F2VO32W6.js');
200
+ const { autoSyncForSearch } = await import('../source-VBROLEFB.js');
201
201
  if (await autoSyncForSearch(projectDir)) {
202
202
  entries = unionEntries(await searchIndex(query, kind), factory);
203
203
  }
@@ -267,7 +267,7 @@ async function searchStore(query, kind, opts, airGapped) {
267
267
  logInfo("air-gapped (cache_ttl: 0) \u2014 local sources only");
268
268
  return;
269
269
  }
270
- const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-SSBN4FX2.js');
270
+ const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-XKWTUYU2.js');
271
271
  try {
272
272
  const remote = await openCatalogSource2({ projectDir: path34__default.resolve(opts.projectDir) });
273
273
  const assets = await remote.listAssets(kind ? { kind } : {});
@@ -587,7 +587,7 @@ async function resolveInfoEntry(am2, ref, opts) {
587
587
  return { entry: match ?? deployed };
588
588
  }
589
589
  const lookup = opts.storeLookup ?? (async (filter) => {
590
- const { resolveCatalogSource } = await import('../open-library-SSBN4FX2.js');
590
+ const { resolveCatalogSource } = await import('../open-library-XKWTUYU2.js');
591
591
  const { source, close } = await resolveCatalogSource({ projectDir: opts.projectDir });
592
592
  try {
593
593
  return await source.listAssets(filter);
@@ -603,7 +603,7 @@ async function resolveInfoEntry(am2, ref, opts) {
603
603
  );
604
604
  return { entry: hit ? catalogAssetToEntry(hit) : null };
605
605
  } catch (err) {
606
- const { LocalCatalogDisabledError } = await import('../open-library-SSBN4FX2.js');
606
+ const { LocalCatalogDisabledError } = await import('../open-library-XKWTUYU2.js');
607
607
  const storeNote = err instanceof Error ? err.message : String(err);
608
608
  const disabled = err instanceof LocalCatalogDisabledError || /catalog\.url/i.test(storeNote);
609
609
  return { entry: null, storeNote, ...disabled ? { storeDisabled: true } : {} };
@@ -1094,7 +1094,7 @@ function makeCatalogCommand() {
1094
1094
  return catalog;
1095
1095
  }
1096
1096
  async function runLocalCatalogTest(projectDir) {
1097
- const { resolveCatalogSource } = await import('../open-library-SSBN4FX2.js');
1097
+ const { resolveCatalogSource } = await import('../open-library-XKWTUYU2.js');
1098
1098
  let resolved;
1099
1099
  try {
1100
1100
  resolved = await resolveCatalogSource({ projectDir });
@@ -1233,7 +1233,7 @@ async function libraryFlowEntries() {
1233
1233
  const indexPath = resolveIndexPath();
1234
1234
  if (!existsSync(indexPath)) return entries;
1235
1235
  const [{ authoringLibraries }, { createFullRegistry: createFullRegistry2 }] = await Promise.all([
1236
- import('../open-library-SSBN4FX2.js'),
1236
+ import('../open-library-XKWTUYU2.js'),
1237
1237
  import('../open-registry-CHCWKV5W.js')
1238
1238
  ]);
1239
1239
  const index = new LocalIndex({ indexPath });
@@ -3521,16 +3521,16 @@ function makeLibraryCommand() {
3521
3521
  "With --create-repo: create the repo private (the store only accepts public repos)"
3522
3522
  ).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(
3523
3523
  async (lib, opts) => {
3524
- const { runLibraryPublish } = await import('../library-publish-TCFU3X5L.js');
3524
+ const { runLibraryPublish } = await import('../library-publish-GHIWWEEY.js');
3525
3525
  await withStoreErrorHandling(() => runLibraryPublish(lib, opts));
3526
3526
  }
3527
3527
  );
3528
3528
  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) => {
3529
- const { runLibraryRegister } = await import('../library-publish-TCFU3X5L.js');
3529
+ const { runLibraryRegister } = await import('../library-publish-GHIWWEEY.js');
3530
3530
  await withStoreErrorHandling(() => runLibraryRegister(lib, opts));
3531
3531
  });
3532
3532
  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) => {
3533
- const { runLibraryYank } = await import('../library-publish-TCFU3X5L.js');
3533
+ const { runLibraryYank } = await import('../library-publish-GHIWWEEY.js');
3534
3534
  await withStoreErrorHandling(() => runLibraryYank(lib, opts));
3535
3535
  });
3536
3536
  return cmd;
@@ -4244,7 +4244,7 @@ function scheduleSoftDepPreview() {
4244
4244
  }
4245
4245
  async function loadAssets() {
4246
4246
  softDepPreviewCache.clear();
4247
- const { gatherAssetFeeds } = await import('../asset-feeds-TU5CS6QL.js');
4247
+ const { gatherAssetFeeds } = await import('../asset-feeds-EVS3WPWS.js');
4248
4248
  const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
4249
4249
  if (notes.length > 0) {
4250
4250
  state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
@@ -4411,7 +4411,7 @@ function reconcileCollapsedSets(rows) {
4411
4411
  async function loadSourcesAndLibraries() {
4412
4412
  try {
4413
4413
  const [{ openLibraryManager: openLibraryManager2 }, { getGlobalCacheDir: getGlobalCacheDir2, globalSkaileDir: globalSkaileDir2 }] = await Promise.all([
4414
- import('../open-library-SSBN4FX2.js'),
4414
+ import('../open-library-XKWTUYU2.js'),
4415
4415
  import('../core/index.js')
4416
4416
  ]);
4417
4417
  const { manager, library, close } = await openLibraryManager2();
@@ -7129,7 +7129,7 @@ function makeServeCommand() {
7129
7129
  );
7130
7130
  }
7131
7131
  async function ensurePluginsLoadedForServe(projectDir) {
7132
- const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-IELQGVGB.js');
7132
+ const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-4NT7UX6I.js');
7133
7133
  try {
7134
7134
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
7135
7135
  const config = resolveSkWorkspaceConfig2(projectDir);
@@ -7148,7 +7148,7 @@ async function ensurePluginsLoadedForServe(projectDir) {
7148
7148
  }
7149
7149
  }
7150
7150
  async function runCompileTest(opts) {
7151
- const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-IELQGVGB.js');
7151
+ const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-4NT7UX6I.js');
7152
7152
  const { tmpdir } = await import('os');
7153
7153
  const { dirname: dirname3, join: join5, resolve: resolve4 } = await import('path');
7154
7154
  const { fileURLToPath: fileURLToPath2 } = await import('url');
@@ -8031,7 +8031,7 @@ function makeStoreCommand() {
8031
8031
  process.exit(2);
8032
8032
  });
8033
8033
  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) => {
8034
- const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-SSBN4FX2.js');
8034
+ const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-XKWTUYU2.js');
8035
8035
  try {
8036
8036
  const remote = await openCatalogSource2({ projectDir: path34__default.resolve(opts.projectDir) });
8037
8037
  const assets = await remote.listAssets(opts.kind ? { kind: opts.kind } : {});
@@ -8059,8 +8059,8 @@ function makeStoreCommand() {
8059
8059
  }
8060
8060
  });
8061
8061
  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) => {
8062
- const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-SSBN4FX2.js');
8063
- const { supportsInstallManifest } = await import('../project-PJ37PM6N.js');
8062
+ const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-XKWTUYU2.js');
8063
+ const { supportsInstallManifest } = await import('../project-P2QS3GNG.js');
8064
8064
  try {
8065
8065
  const remote = await openCatalogSource2({ projectDir: path34__default.resolve(opts.projectDir) });
8066
8066
  const asset = await remote.resolve(ref);
@@ -9175,7 +9175,7 @@ async function bootstrapUserConfig() {
9175
9175
  }
9176
9176
  async function hydrateInitSources(resolved, created) {
9177
9177
  try {
9178
- const { ensureSourcesCloned } = await import('../ensure-sources-2XQS32WI.js');
9178
+ const { ensureSourcesCloned } = await import('../ensure-sources-KVV72WRP.js');
9179
9179
  const hydrate = ensureSourcesCloned(resolved, { quiet: true });
9180
9180
  for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
9181
9181
  if (hydrate.failed.length > 0) {
@@ -9215,7 +9215,7 @@ function printInitSummary(resolved, projectDir, created) {
9215
9215
  console.log();
9216
9216
  }
9217
9217
  program.command("setup").description("Interactive provider setup wizard").action(async () => {
9218
- const { cmdSetup } = await import('../setup-JW2ZGCUG.js');
9218
+ const { cmdSetup } = await import('../setup-RVP74D37.js');
9219
9219
  await cmdSetup([], { projectDir: process.cwd() });
9220
9220
  });
9221
9221
  program.addCommand(makeInstallCommand());
@@ -1,4 +1,4 @@
1
- export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, CONNECT_FAILURE_CARRY_OVER_TTL_MS, ConnectFailureCarryOver, ConnectorManager, FlowAdapter, LogBuffer, ManagedGitconfigCollisionError, NO_ACTIVE_FLOW_ERROR, PortPool, atomicReplaceCredential, buildConnectorListPayload, buildConnectorPromptSection, buildLazyFlowToolDefs, buildLazySdkFlowTools, buildSdkConnectorTools, buildSdkFlowTools, checkFleetMountLiveness, classifyConnectError, createFsWatcher, createWorktree, defaultSpawn, ensureDirMode, ensureFleetMounted, ensureRefreshAttemptStamp, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, missingTokenMediatorMessage, registerBuiltinConnectors, removeMountBlock, removeUnavailableMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock, writeUnavailableMountBlock } from '../chunk-QFZFZXQW.js';
1
+ export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, CONNECT_FAILURE_CARRY_OVER_TTL_MS, ConnectFailureCarryOver, ConnectorManager, FlowAdapter, LogBuffer, ManagedGitconfigCollisionError, NO_ACTIVE_FLOW_ERROR, PortPool, atomicReplaceCredential, buildConnectorListPayload, buildConnectorPromptSection, buildLazyFlowToolDefs, buildLazySdkFlowTools, buildSdkConnectorTools, buildSdkFlowTools, checkFleetMountLiveness, classifyConnectError, createFsWatcher, createWorktree, defaultSpawn, ensureDirMode, ensureFleetMounted, ensureRefreshAttemptStamp, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, missingTokenMediatorMessage, registerBuiltinConnectors, removeMountBlock, removeUnavailableMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock, writeUnavailableMountBlock } from '../chunk-N2X7DK2S.js';
2
2
  export { CONNECT_ERROR_KIND_PROPERTY, ClassifiedConnectError, declaredConnectErrorKind, withConnectErrorKind } from '../chunk-KC3OF6B2.js';
3
3
  export { ConnectorFieldMissingError, ConnectorStartupError, EnvSecretProvider, ForgeSecretProvider, InMemorySecretProvider, LegacyAuthGrammarError, LockedSecretProvider, OAuthRequiredError, PreMintedSecretProvider, SecretProviderChain, createCliSecretProviderChain, createForgeSecretProviderChain, deriveSingleMaterializedConnectorDeclaration, fromMaterializedConnectorMd, isKnownSecretRef, loadConnectorDeclarations, loadMaterializedConnectorDeclarations, loadYamlConnectorDeclarations, readUnavailableMarker, resolveAuthRef, resolveBackendAuthFor, resolvedConfigToDeclarations, withMaterializedConnectorDeclarations } from '../chunk-WKIOWDLQ.js';
4
4
  import '../chunk-YIVB7GIP.js';
@@ -13,7 +13,7 @@ import '../chunk-RDTHJSGY.js';
13
13
  import '../chunk-6E6PKKAD.js';
14
14
  import '../chunk-IFGTRL2I.js';
15
15
  import '../chunk-UMSWQKCY.js';
16
- import '../chunk-JUXQUZOQ.js';
16
+ import '../chunk-37FTLYFP.js';
17
17
  import '../chunk-QZLWJETK.js';
18
18
  import '../chunk-XUUYAS3Z.js';
19
19
  import '../chunk-NFGRW3L7.js';
@@ -1,6 +1,6 @@
1
- export { connectorDescribe, connectorExec, connectorList, connectorLoadSkill, connectorRead, connectorSearch, connectorWrite, mountList, mountRead, mountStatus, mountSync } from './chunk-AOMWF2OE.js';
1
+ export { connectorDescribe, connectorExec, connectorList, connectorLoadSkill, connectorRead, connectorSearch, connectorWrite, mountList, mountRead, mountStatus, mountSync } from './chunk-ZMMFBID4.js';
2
2
  import './chunk-X5YPJV4N.js';
3
- import './chunk-QFZFZXQW.js';
3
+ import './chunk-N2X7DK2S.js';
4
4
  import './chunk-KC3OF6B2.js';
5
5
  import './chunk-WKIOWDLQ.js';
6
6
  import './chunk-YIVB7GIP.js';
@@ -15,7 +15,7 @@ import './chunk-RDTHJSGY.js';
15
15
  import './chunk-6E6PKKAD.js';
16
16
  import './chunk-IFGTRL2I.js';
17
17
  import './chunk-UMSWQKCY.js';
18
- import './chunk-JUXQUZOQ.js';
18
+ import './chunk-37FTLYFP.js';
19
19
  import './chunk-QZLWJETK.js';
20
20
  import './chunk-XUUYAS3Z.js';
21
21
  import './chunk-NFGRW3L7.js';
@@ -41,5 +41,5 @@ import './chunk-C3CAXQMA.js';
41
41
  import './chunk-BOFL7GIF.js';
42
42
  import './chunk-5CYEWBPB.js';
43
43
  import './chunk-NSBPE2FW.js';
44
- //# sourceMappingURL=connectors-VX7YRFFS.js.map
45
- //# sourceMappingURL=connectors-VX7YRFFS.js.map
44
+ //# sourceMappingURL=connectors-KSVPVYCA.js.map
45
+ //# sourceMappingURL=connectors-KSVPVYCA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"connectors-VX7YRFFS.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"connectors-KSVPVYCA.js"}
@@ -1,5 +1,5 @@
1
- import { logErr, logOk, logInfo } from './chunk-2Y6DSR36.js';
2
- import './chunk-6LDUA57J.js';
1
+ import { logErr, logOk, logInfo } from './chunk-TB6GDL6Q.js';
2
+ import './chunk-YJACHPI7.js';
3
3
  import './chunk-SP47UJKE.js';
4
4
  import './chunk-UVOJSWD2.js';
5
5
  import './chunk-H4EGUQ7M.js';
@@ -92,5 +92,5 @@ function ensureSourcesCloned(projectDir, opts = {}) {
92
92
  }
93
93
 
94
94
  export { ensureSourcesCloned };
95
- //# sourceMappingURL=ensure-sources-2XQS32WI.js.map
96
- //# sourceMappingURL=ensure-sources-2XQS32WI.js.map
95
+ //# sourceMappingURL=ensure-sources-KVV72WRP.js.map
96
+ //# sourceMappingURL=ensure-sources-KVV72WRP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/ensure-sources.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,SAAS,gBAAgB,GAAA,EAAqB;AAC5C,EAAA,OAAY,IAAA,CAAA,IAAA,CAAK,iBAAA,EAAkB,EAAG,GAAG,CAAA;AAC3C;AASA,SAAS,kBAAA,CAAmB,UAAkB,KAAA,EAAsC;AAClF,EAAA,IAAI;AACF,IAAA,OAAO,mBAAA,CAAoB,IAAA,CAAK,QAAQ,CAAA,CAAE,UAAA,EAAW;AAAA,EACvD,SAAS,GAAA,EAAK;AACZ,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAA,CAAO,CAAA,eAAA,EAAkB,QAAQ,CAAA,EAAA,EAAK,GAAA,YAAe,KAAA,GAAQ,IAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,IAC1F;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAMA,SAAS,kBAAA,CAAmB,KAAA,EAAoB,KAAA,EAAgB,MAAA,EAA4B;AAC1F,EAAA,MAAM,GAAA,GAAM,cAAA,CAAe,KAAA,CAAM,GAAG,CAAA;AACpC,EAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,KAAA,CAAM,GAAG,CAAA;AACtC,EAAA,MAAM,IAAA,GAAO,gBAAgB,GAAG,CAAA;AAChC,EAAA,IAAI,UAAA,CAAW,IAAI,CAAA,EAAG;AACpB,IAAA,MAAA,CAAO,MAAA,CAAO,KAAK,IAAI,CAAA;AACvB,IAAA;AAAA,EACF;AACA,EAAA,SAAA,CAAe,aAAQ,IAAI,CAAA,EAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AACjD,EAAA,MAAM,IAAA,GAAO,CAAC,OAAA,EAAS,KAAA,CAAM,KAAK,IAAI,CAAA;AACtC,EAAA,IAAI,KAAA,CAAM,KAAK,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,EAAG,UAAA,EAAY,MAAM,GAAG,CAAA;AACtD,EAAA,MAAM,KAAA,GAAQ,UAAU,KAAA,EAAO,IAAA,EAAM,EAAE,KAAA,EAAO,KAAA,GAAQ,MAAA,GAAS,SAAA,EAAW,CAAA;AAC1E,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,MAAA,CAAO,MAAA,CAAO,KAAK,IAAI,CAAA;AACvB,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,MAAA,CAAO,CAAA,qBAAA,EAAwB,KAAA,CAAM,GAAG,CAAA,CAAE,CAAA;AAAA,IAC5C;AACA,IAAA;AAAA,EACF;AACA,EAAA,MAAA,CAAO,MAAA,CAAO,KAAK,IAAI,CAAA;AACzB;AAGA,SAAS,kBAAkB,MAAA,EAA4B;AACrD,EAAA,KAAA,MAAW,KAAK,MAAA,CAAO,MAAA,EAAQ,KAAA,CAAM,CAAA,eAAA,EAAkB,CAAC,CAAA,EAAA,CAAI,CAAA;AAC5D,EAAA,IAAI,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAC5B,IAAA,OAAA,CAAQ,yBAAyB,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EAC7D;AACF;AAUO,SAAS,mBAAA,CACd,UAAA,EACA,IAAA,GAA4B,EAAC,EACf;AACd,EAAA,MAAM,MAAA,GAAuB,EAAE,MAAA,EAAQ,EAAC,EAAG,QAAQ,EAAC,EAAG,MAAA,EAAQ,EAAC,EAAE;AAClE,EAAA,MAAM,QAAA,GAAgB,IAAA,CAAA,IAAA,CAAK,UAAA,EAAY,aAAa,CAAA;AACpD,EAAA,IAAI,CAAC,UAAA,CAAW,QAAQ,CAAA,EAAG,OAAO,MAAA;AAElC,EAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,IAAS,KAAA;AAC5B,EAAA,MAAM,OAAA,GAAU,kBAAA,CAAmB,QAAA,EAAU,KAAK,CAAA;AAClD,EAAA,IAAI,OAAA,KAAY,MAAM,OAAO,MAAA;AAC7B,EAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAEjC,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,kBAAA,CAAmB,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,EACzC;AAEA,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,iBAAA,CAAkB,MAAM,CAAA;AAAA,EAC1B;AAEA,EAAA,OAAO,MAAA;AACT","file":"ensure-sources-2XQS32WI.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-KVV72WRP.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,4 +1,4 @@
1
- export { BoxConnector, createConnector4 as createConnector } from '../../chunk-QFZFZXQW.js';
1
+ export { BoxConnector, createConnector4 as createConnector } from '../../chunk-N2X7DK2S.js';
2
2
  import '../../chunk-KC3OF6B2.js';
3
3
  import '../../chunk-WKIOWDLQ.js';
4
4
  import '../../chunk-YIVB7GIP.js';
@@ -13,7 +13,7 @@ import '../../chunk-RDTHJSGY.js';
13
13
  import '../../chunk-6E6PKKAD.js';
14
14
  import '../../chunk-IFGTRL2I.js';
15
15
  import '../../chunk-UMSWQKCY.js';
16
- import '../../chunk-JUXQUZOQ.js';
16
+ import '../../chunk-37FTLYFP.js';
17
17
  import '../../chunk-QZLWJETK.js';
18
18
  import '../../chunk-XUUYAS3Z.js';
19
19
  import '../../chunk-NFGRW3L7.js';
@@ -1,4 +1,4 @@
1
- export { DeployConnector, createConnector2 as createConnector } from '../../chunk-QFZFZXQW.js';
1
+ export { DeployConnector, createConnector2 as createConnector } from '../../chunk-N2X7DK2S.js';
2
2
  import '../../chunk-KC3OF6B2.js';
3
3
  import '../../chunk-WKIOWDLQ.js';
4
4
  import '../../chunk-YIVB7GIP.js';
@@ -13,7 +13,7 @@ import '../../chunk-RDTHJSGY.js';
13
13
  import '../../chunk-6E6PKKAD.js';
14
14
  import '../../chunk-IFGTRL2I.js';
15
15
  import '../../chunk-UMSWQKCY.js';
16
- import '../../chunk-JUXQUZOQ.js';
16
+ import '../../chunk-37FTLYFP.js';
17
17
  import '../../chunk-QZLWJETK.js';
18
18
  import '../../chunk-XUUYAS3Z.js';
19
19
  import '../../chunk-NFGRW3L7.js';
@@ -1,4 +1,4 @@
1
- export { DevServerConnector, createConnector3 as createConnector } from '../../chunk-QFZFZXQW.js';
1
+ export { DevServerConnector, createConnector3 as createConnector } from '../../chunk-N2X7DK2S.js';
2
2
  import '../../chunk-KC3OF6B2.js';
3
3
  import '../../chunk-WKIOWDLQ.js';
4
4
  import '../../chunk-YIVB7GIP.js';
@@ -13,7 +13,7 @@ import '../../chunk-RDTHJSGY.js';
13
13
  import '../../chunk-6E6PKKAD.js';
14
14
  import '../../chunk-IFGTRL2I.js';
15
15
  import '../../chunk-UMSWQKCY.js';
16
- import '../../chunk-JUXQUZOQ.js';
16
+ import '../../chunk-37FTLYFP.js';
17
17
  import '../../chunk-QZLWJETK.js';
18
18
  import '../../chunk-XUUYAS3Z.js';
19
19
  import '../../chunk-NFGRW3L7.js';
@@ -29,7 +29,7 @@ import type { FlowExecution } from "@skaile/workspaces/types";
29
29
  import type { BindingOrigin } from "./contract/expression.js";
30
30
  import { type FlowDefinition, isBlocking } from "./engine/index.js";
31
31
  import { type NodeExecutor } from "./node-executor.js";
32
- import type { InlineSubFlowOperationTarget, InlineSubFlowRunner } from "./sub-flow-runner.js";
32
+ import { type InlineSubFlowOperationTarget, type InlineSubFlowRunner } from "./sub-flow-runner.js";
33
33
  import type { SubpromptRunner } from "./subprompt-runner.js";
34
34
  import { type TurnStimulus } from "./prompt-fragments.js";
35
35
  /**
@@ -375,6 +375,8 @@ export declare class FlowAdapter extends AbstractConnector {
375
375
  * failure message is synthesized at the moment of detection.
376
376
  * @param checkEvidence - Derived evidence for a check's fail verdict, so it
377
377
  * rides on the same appended attempt as the failure it explains.
378
+ * @param automaticRetry - False for a failure no retry can fix (a sub-flow
379
+ * contract mismatch): the budget is not spent, the manual override stays.
378
380
  */
379
381
  private planAutomaticRetry;
380
382
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../factory-assets/connectors/flow/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../factory-assets/connectors/flow/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { FlowAdapter, createConnector, describeFlowOperations } from '../../../chunk-QFZFZXQW.js';
1
+ export { FlowAdapter, createConnector, describeFlowOperations } from '../../../chunk-N2X7DK2S.js';
2
2
  import '../../../chunk-KC3OF6B2.js';
3
3
  import '../../../chunk-WKIOWDLQ.js';
4
4
  import '../../../chunk-YIVB7GIP.js';
@@ -13,7 +13,7 @@ import '../../../chunk-RDTHJSGY.js';
13
13
  import '../../../chunk-6E6PKKAD.js';
14
14
  import '../../../chunk-IFGTRL2I.js';
15
15
  export { isBlocking } from '../../../chunk-UMSWQKCY.js';
16
- import '../../../chunk-JUXQUZOQ.js';
16
+ import '../../../chunk-37FTLYFP.js';
17
17
  import '../../../chunk-QZLWJETK.js';
18
18
  import '../../../chunk-XUUYAS3Z.js';
19
19
  import '../../../chunk-NFGRW3L7.js';
@@ -3,7 +3,7 @@ export { coerceInputSchema, INPUT_SCHEMA_SHAPES_HINT, type InputSchemaCoercion,
3
3
  export { normalizeV1, parseFlowDefinition, type FlowDefinitionIssue, type FlowDefinitionParseResult, type LegacyCompatibilityEdge, type ParsedFlowDefinition, } from "./normalize.js";
4
4
  export { evaluate, evaluateFlowExpression, FLOW_EXPRESSION_LIMITS, FlowExpressionError, inspectFlowExpressionComparisons, resolveFlowBindings, type FlowExpressionComparison, type FlowExpressionOperand, type BindingOrigin, type FlowExpressionContext, type NodeOutputOrigin, type ResolvedBinding, type ResolvedNodeBindings, } from "./expression.js";
5
5
  export { checkClassifierShape, classifierDecision, declaresReservedClassifierField, RESERVED_CLASSIFIER_FIELDS, withoutReservedClassifierFields, type ClassifierDecision, type ClassifierShapeCheck, type ReservedClassifierField, } from "./classifier.js";
6
- export { undeclaredSubFlowOutputReads } from "./sub-flow-output.js";
6
+ export { mismatchedSubFlowOutputTypes, type SubFlowOutputTypeMismatch, undeclaredSubFlowOutputReads, } from "./sub-flow-output.js";
7
7
  export { canonicalizeFlowDefinition, hashFlowDefinition } from "./hash.js";
8
8
  export { FLOW_DEFINITION_JSON_SCHEMA_ID, generateFlowDefinitionJsonSchema, } from "./json-schema.js";
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,qBAAqB,EACrB,gCAAgC,EAChC,oBAAoB,EACpB,gCAAgC,EAChC,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,QAAQ,EACR,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,gCAAgC,EAChC,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,+BAA+B,EAC/B,0BAA0B,EAC1B,+BAA+B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,qBAAqB,EACrB,gCAAgC,EAChC,oBAAoB,EACpB,gCAAgC,EAChC,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,QAAQ,EACR,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,gCAAgC,EAChC,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,+BAA+B,EAC/B,0BAA0B,EAC1B,+BAA+B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,kBAAkB,CAAC"}
@@ -16,5 +16,25 @@ interface SubFlowChild {
16
16
  * Throws when a parent consumer expression does not parse.
17
17
  */
18
18
  export declare function undeclaredSubFlowOutputReads(parent: SubFlowParent, subFlowNodeId: string, child: SubFlowChild): string[];
19
+ /** One parent read whose declared type the child's returned type does not fit. */
20
+ export interface SubFlowOutputTypeMismatch {
21
+ /** Dot-joined path relative to `output.fields`. */
22
+ path: string;
23
+ /** JSON Schema `type` the parent's sub-flow node declares for the path. */
24
+ parentType: string[];
25
+ /** JSON Schema `type` the child's `output.schema` declares for the path. */
26
+ childType: string[];
27
+ }
28
+ /**
29
+ * Parent reads whose type, as the parent's sub-flow node declares it in
30
+ * `contract.output.fields`, the child's `output.schema` does not fit.
31
+ *
32
+ * Compares only the JSON Schema `type` keyword, and only where both sides
33
+ * declare one: every child type must be one the parent accepts, with
34
+ * `integer` accepted where the parent says `number`. Reads the child does not
35
+ * return are left to {@link undeclaredSubFlowOutputReads}.
36
+ * Throws when a parent consumer expression does not parse.
37
+ */
38
+ export declare function mismatchedSubFlowOutputTypes(parent: SubFlowParent, subFlowNodeId: string, child: SubFlowChild): SubFlowOutputTypeMismatch[];
19
39
  export {};
20
40
  //# sourceMappingURL=sub-flow-output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sub-flow-output.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/contract/sub-flow-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAsC,MAAM,oBAAoB,CAAC;AAElG,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAClF;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,YAAY,GAClB,MAAM,EAAE,CAUV"}
1
+ {"version":3,"file":"sub-flow-output.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/contract/sub-flow-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAsC,MAAM,oBAAoB,CAAC;AAElG,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAClF;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,YAAY,GAClB,MAAM,EAAE,CAUV;AAED,kFAAkF;AAClF,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAUD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,YAAY,GAClB,yBAAyB,EAAE,CAgB7B"}
@@ -1,5 +1,5 @@
1
1
  export { FLOW_DEFINITION_JSON_SCHEMA_ID, canonicalizeFlowDefinition, generateFlowDefinitionJsonSchema, hashFlowDefinition } from '../../../chunk-CT6NQSA4.js';
2
- export { INPUT_SCHEMA_SHAPES_HINT, coerceInputSchema, undeclaredSubFlowOutputReads } from '../../../chunk-JUXQUZOQ.js';
2
+ export { INPUT_SCHEMA_SHAPES_HINT, coerceInputSchema, mismatchedSubFlowOutputTypes, undeclaredSubFlowOutputReads } from '../../../chunk-37FTLYFP.js';
3
3
  export { normalizeV1, parseFlowDefinition } from '../../../chunk-QZLWJETK.js';
4
4
  export { FLOW_CAPTURE_CHANNELS, FLOW_CAPTURE_DESTINATION_PATTERN, FLOW_EXPRESSION_LIMITS, FlowDefinitionSchema, FlowExpressionError, RESERVED_CLASSIFIER_FIELDS, captureDestinationFieldName, checkClassifierShape, classifierDecision, declaresReservedClassifierField, duplicateCaptureDestinationMessage, evaluate, evaluateFlowExpression, inspectFlowExpressionComparisons, invalidCaptureDestinationMessage, resolveFlowBindings, withoutReservedClassifierFields } from '../../../chunk-QCI6D7E4.js';
5
5
  import '../../../chunk-NSBPE2FW.js';
@@ -4,6 +4,7 @@ export { type InlineSubFlowAgentTurn, SessionInlineSubFlowRunner, type SessionIn
4
4
  export { SessionNodeExecutor, type DeterministicFlowNode, type FunctionFlowNode, type NodeExecutor, type NodeExecutorOptions, type NodeExecutorRequest, type NodeExecutorResult, type SessionNodeExecutorOptions, } from "./node-executor.js";
5
5
  export { buildFlowPromptEvent, driveOrchestratorTurn, type FlowTurnContext, type FlowTurnSinks, } from "./orchestrator-turn.js";
6
6
  export type { InlineSubFlowOperationTarget, InlineSubFlowProjection, InlineSubFlowRequest, InlineSubFlowResult, InlineSubFlowRunner, SubFlowFlowNode, } from "./sub-flow-runner.js";
7
+ export { SubFlowContractError } from "./sub-flow-runner.js";
7
8
  export { ClassifierSubpromptRunner, classifierQuestion, type ClassifierFallback, type ClassifierSubpromptRunnerOptions, type HostClassifyInvoker, } from "./classifier-subprompt-runner.js";
8
9
  export { SessionSubpromptRunner, type SessionSubpromptRunnerOptions, type SubpromptExecutorRequest, type SubpromptExecutorResult, type SubpromptFlowNode, type SubpromptRunner, } from "./subprompt-runner.js";
9
10
  //# sourceMappingURL=index.d.ts.map