@makaio/framework 1.0.0-dev-1781729394463 → 1.0.0-dev-1781766035621

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 (102) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/{adapter-B5I7Wp4y.mjs → adapter-BmdC3QwV.mjs} +1 -1
  3. package/dist/adapters/index.d.mts +1 -1
  4. package/dist/adapters/stream-session/index.d.mts +2 -0
  5. package/dist/await-trigger-DwVldnMt.mjs +1 -0
  6. package/dist/bus/index.d.mts +20 -20
  7. package/dist/bus/index.mjs +1 -1
  8. package/dist/{canonical-model-BWGkgf3v.mjs → canonical-model-BM5WAnQW.mjs} +1 -1
  9. package/dist/compression-CXEHx0rS.mjs +1 -0
  10. package/dist/contracts/adapter/index.d.mts +2 -2
  11. package/dist/contracts/adapter/index.mjs +1 -1
  12. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  13. package/dist/contracts/artifact/index.d.mts +1 -1
  14. package/dist/contracts/canonical-model/index.d.mts +1 -1
  15. package/dist/contracts/canonical-model/index.mjs +1 -1
  16. package/dist/contracts/client/index.d.mts +1 -1
  17. package/dist/contracts/extension/index.d.mts +2 -2
  18. package/dist/contracts/facet/index.d.mts +1 -1
  19. package/dist/contracts/harness/index.d.mts +1 -1
  20. package/dist/contracts/index.d.mts +175 -170
  21. package/dist/contracts/index.mjs +1 -1
  22. package/dist/contracts/materialization/index.d.mts +3 -3
  23. package/dist/contracts/session/index.d.mts +2 -2
  24. package/dist/contracts/session/index.mjs +1 -1
  25. package/dist/contracts/variant/index.d.mts +1 -1
  26. package/dist/contracts/workflow/index.d.mts +2 -2
  27. package/dist/{definition-b9jyJqPD.d.mts → definition-D_3U4OLJ.d.mts} +1 -1
  28. package/dist/{index-BEzRpWsS.d.mts → index-61LNzR4E.d.mts} +394 -394
  29. package/dist/{index-kwq54nx4.d.mts → index-B08YYzYZ.d.mts} +24 -24
  30. package/dist/{index-CmHdpW0E.d.mts → index-BN95duxC.d.mts} +8 -8
  31. package/dist/{index-DKNmj2sa.d.mts → index-B_FtZ3Gn.d.mts} +15 -15
  32. package/dist/{index-DWKCb-eJ.d.mts → index-BwZpSUql.d.mts} +28 -28
  33. package/dist/{index-DMz-2ACU.d.mts → index-ByDySw3V.d.mts} +100 -100
  34. package/dist/{index-Dw7ErgWU.d.mts → index-CewENhZO.d.mts} +8 -8
  35. package/dist/{index-CZJc-V9L.d.mts → index-Ch8A757m.d.mts} +17 -17
  36. package/dist/{index-mU2lnU7O.d.mts → index-CqCe7Phc.d.mts} +6 -6
  37. package/dist/{index-aciWhUWw.d.mts → index-DCDZrmkB.d.mts} +342 -342
  38. package/dist/{index-D1KPCXBN.d.mts → index-UKndP4iV.d.mts} +1 -1
  39. package/dist/{index-CW_LbXdg.d.mts → index-Y2r0Zvcm.d.mts} +8 -8
  40. package/dist/{index-Cjo24O5I.d.mts → index-YoTbsavl.d.mts} +39 -39
  41. package/dist/{index-BWIkf5oJ.d.mts → index-mpYmdMt9.d.mts} +9 -9
  42. package/dist/{index-DTBQOCar.d.mts → index-xyXYG5WO.d.mts} +16 -16
  43. package/dist/kernel/extension/index.d.mts +1 -1
  44. package/dist/kernel/index.d.mts +2 -2
  45. package/dist/kernel/observability/index.d.mts +1 -1
  46. package/dist/loop-gate-handlers-BLoGCWMQ.mjs +1 -0
  47. package/dist/mcp-http-server/index.mjs +1 -1
  48. package/dist/{namespace-KMxsPJwm.d.mts → namespace-BeMGmLrp.d.mts} +9 -9
  49. package/dist/{namespace-65uwTpbg.d.mts → namespace-Cir7d-vM.d.mts} +6 -6
  50. package/dist/{namespace-COEUMuHL.d.mts → namespace-Ct8ipis5.d.mts} +154 -154
  51. package/dist/{namespace-6sIu5nBI2.d.mts → namespace-D8P8Sxce2.d.mts} +2 -2
  52. package/dist/{namespace-DYJZAGzR.d.mts → namespace-Da5Ip_ru.d.mts} +58 -58
  53. package/dist/{package-rdrXr17q.mjs → package-B1AXe-oz.mjs} +1 -1
  54. package/dist/package.json +1 -1
  55. package/dist/runtime-node/index.mjs +1 -1
  56. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  57. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  58. package/dist/{schema-B2bO5Yui.d.mts → schema-TNNx-dYQ.d.mts} +3 -3
  59. package/dist/{schemas-D4zaFE2p.d.mts → schemas-C_gGGevw.d.mts} +6 -6
  60. package/dist/{schemas-CDBn9MTz.d.mts → schemas-CarFhw0P.d.mts} +154 -154
  61. package/dist/{schemas-ByssHRGU2.d.mts → schemas-DF_RgKLw2.d.mts} +11 -11
  62. package/dist/{schemas-DMMWmWjq.d.mts → schemas-DXjyGVpx.d.mts} +4 -4
  63. package/dist/{schemas-BWasvfw2.mjs → schemas-yNBjlOKi.mjs} +1 -1
  64. package/dist/services/agent-runtime/index.d.mts +2 -2
  65. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  66. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  67. package/dist/services/context-rules/index.d.mts +3 -3
  68. package/dist/services/execution-target/index.d.mts +3 -3
  69. package/dist/services/execution-target/namespace.d.mts +1 -1
  70. package/dist/services/execution-target/schemas.d.mts +1 -1
  71. package/dist/services/filesystem/namespace.d.mts +6 -6
  72. package/dist/services/filesystem/schemas.d.mts +3 -3
  73. package/dist/services/git/namespace.d.mts +2 -2
  74. package/dist/services/git/schemas.d.mts +1 -1
  75. package/dist/services/harness/index.d.mts +6 -6
  76. package/dist/services/index.d.mts +110 -110
  77. package/dist/services/index.mjs +1 -1
  78. package/dist/services/session/index.d.mts +4 -4
  79. package/dist/services/session/session-events/namespace.d.mts +1 -1
  80. package/dist/services/session/storage/namespace.d.mts +1 -1
  81. package/dist/services/session/storage/schema.d.mts +1 -1
  82. package/dist/services/settings/namespace.d.mts +8 -8
  83. package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
  84. package/dist/services/subagent-template/index.d.mts +2 -2
  85. package/dist/services/subagent-template/namespace.d.mts +1 -1
  86. package/dist/services/subagent-template/schemas.d.mts +1 -1
  87. package/dist/services/tools/index.mjs +1 -1
  88. package/dist/{session-Bey-bzcX.mjs → session-DLTZOum3.mjs} +1 -1
  89. package/dist/{session-lineage-Cht4jbvV.d.mts → session-lineage-5-wRBzuC.d.mts} +1 -1
  90. package/dist/tools/index.d.mts +8 -0
  91. package/dist/{tools-uAgIrqan.mjs → tools-DFOsOboy.mjs} +1 -1
  92. package/dist/{transition-Coowd2dA.d.mts → transition-ByWf06n-.d.mts} +1 -1
  93. package/dist/{types-Cagp7JXb.d.mts → types-D2Q9qI-a.d.mts} +282 -282
  94. package/dist/workflow-engine/index.d.mts +32 -32
  95. package/dist/workflow-engine/index.mjs +1 -1
  96. package/dist/workflow-engine/package.mjs +1 -1
  97. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  98. package/dist/{workflow-worker-CojIlB6k.mjs → workflow-worker-BIpYi6o7.mjs} +1 -1
  99. package/package.json +5 -1
  100. package/dist/await-trigger-DcMVmNW5.mjs +0 -1
  101. package/dist/compression-DMoeVgKx.mjs +0 -1
  102. package/dist/loop-gate-handlers-CwU5zAGs.mjs +0 -1
@@ -1,2 +1,2 @@
1
- import { n as SessionEventStorageSubjects, t as SessionEventStorageNamespace } from "../../../namespace-KMxsPJwm.mjs";
1
+ import { n as SessionEventStorageSubjects, t as SessionEventStorageNamespace } from "../../../namespace-BeMGmLrp.mjs";
2
2
  export { SessionEventStorageNamespace, SessionEventStorageSubjects };
@@ -1,2 +1,2 @@
1
- import { a as SessionWithPreview, i as SessionStorageSubjects, n as SessionPreviewDataSchema, o as SessionWithPreviewSchema, r as SessionStorageNamespace, t as SessionPreviewData } from "../../../namespace-DYJZAGzR.mjs";
1
+ import { a as SessionWithPreview, i as SessionStorageSubjects, n as SessionPreviewDataSchema, o as SessionWithPreviewSchema, r as SessionStorageNamespace, t as SessionPreviewData } from "../../../namespace-Da5Ip_ru.mjs";
2
2
  export { SessionPreviewData, SessionPreviewDataSchema, SessionStorageNamespace, SessionStorageSubjects, SessionWithPreview, SessionWithPreviewSchema };
@@ -1,2 +1,2 @@
1
- import { a as agents, c as sessionsDual, i as SelectSession, n as InsertSession, o as agentsDual, r as SelectAgent, s as sessions, t as InsertAgent } from "../../../schema-B2bO5Yui.mjs";
1
+ import { a as agents, c as sessionsDual, i as SelectSession, n as InsertSession, o as agentsDual, r as SelectAgent, s as sessions, t as InsertAgent } from "../../../schema-TNNx-dYQ.mjs";
2
2
  export { InsertAgent, InsertSession, SelectAgent, SelectSession, agents, agentsDual, sessions, sessionsDual };
@@ -518,18 +518,18 @@ declare const SubagentTemplateSettingsNamespace: _$_makaio_core0.BusNamespaceDef
518
518
  create: {
519
519
  request: _$zod.ZodObject<{
520
520
  name: _$zod.ZodString;
521
- providerConfigId: _$zod.ZodOptional<_$zod.ZodString>;
522
521
  adapterName: _$zod.ZodString;
522
+ enabled: _$zod.ZodDefault<_$zod.ZodBoolean>;
523
+ providerConfigId: _$zod.ZodOptional<_$zod.ZodString>;
523
524
  model: _$zod.ZodOptional<_$zod.ZodString>;
524
525
  contextMode: _$zod.ZodDefault<_$zod.ZodEnum<{
525
526
  fork: "fork";
526
527
  fresh: "fresh";
527
528
  }>>;
528
- disallowedTools: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
529
- allowedDirectories: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
530
529
  systemPrompt: _$zod.ZodOptional<_$zod.ZodString>;
531
- enabled: _$zod.ZodDefault<_$zod.ZodBoolean>;
532
530
  allowedTools: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
531
+ disallowedTools: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
532
+ allowedDirectories: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
533
533
  }, _$zod_v4_core0.$strip>;
534
534
  response: _$zod.ZodObject<{
535
535
  id: _$zod.ZodString;
@@ -609,18 +609,18 @@ declare const SubagentTemplateSettingsSubjects: _$_makaio_core0.BusSubjects<_$_m
609
609
  create: {
610
610
  request: _$zod.ZodObject<{
611
611
  name: _$zod.ZodString;
612
- providerConfigId: _$zod.ZodOptional<_$zod.ZodString>;
613
612
  adapterName: _$zod.ZodString;
613
+ enabled: _$zod.ZodDefault<_$zod.ZodBoolean>;
614
+ providerConfigId: _$zod.ZodOptional<_$zod.ZodString>;
614
615
  model: _$zod.ZodOptional<_$zod.ZodString>;
615
616
  contextMode: _$zod.ZodDefault<_$zod.ZodEnum<{
616
617
  fork: "fork";
617
618
  fresh: "fresh";
618
619
  }>>;
619
- disallowedTools: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
620
- allowedDirectories: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
621
620
  systemPrompt: _$zod.ZodOptional<_$zod.ZodString>;
622
- enabled: _$zod.ZodDefault<_$zod.ZodBoolean>;
623
621
  allowedTools: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
622
+ disallowedTools: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
623
+ allowedDirectories: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
624
624
  }, _$zod_v4_core0.$strip>;
625
625
  response: _$zod.ZodObject<{
626
626
  id: _$zod.ZodString;
@@ -18,8 +18,8 @@ declare const ExtensionConfigInputSchema: z.ZodObject<{
18
18
  id: z.ZodString;
19
19
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
20
20
  extensionName: z.ZodString;
21
- enabled: z.ZodBoolean;
22
21
  scope: z.ZodString;
22
+ enabled: z.ZodBoolean;
23
23
  }, z.core.$strip>;
24
24
  /** Query schema for listing extension configs. */
25
25
  declare const ExtensionConfigListQuerySchema: z.ZodObject<{
@@ -63,8 +63,8 @@ declare const ExtensionConfigStorageNamespace: _$_makaio_storage_core0.StorageNa
63
63
  id: z.ZodString;
64
64
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
65
65
  extensionName: z.ZodString;
66
- enabled: z.ZodBoolean;
67
66
  scope: z.ZodString;
67
+ enabled: z.ZodBoolean;
68
68
  }, z.core.$strip>;
69
69
  }, z.core.$strip>;
70
70
  response: z.ZodObject<{
@@ -131,8 +131,8 @@ declare const ExtensionConfigStorageSubjects: _$_makaio_core0.BusSubjects<_$_mak
131
131
  id: z.ZodString;
132
132
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
133
133
  extensionName: z.ZodString;
134
- enabled: z.ZodBoolean;
135
134
  scope: z.ZodString;
135
+ enabled: z.ZodBoolean;
136
136
  }, z.core.$strip>;
137
137
  }, z.core.$strip>;
138
138
  response: z.ZodObject<{
@@ -1,3 +1,3 @@
1
- import { _ as SubagentTemplateUpdate, a as SubagentTemplateInstance, c as SubagentTemplateInstanceStatusSchema, d as SubagentTemplateSettingsSchemas, f as SubagentTemplateSpawnRequest, g as SubagentTemplateSummarySchema, h as SubagentTemplateSummary, i as SubagentTemplateCreateSchema, l as SubagentTemplateKernelSchemas, m as SubagentTemplateSpawnedEventSchema, n as SubagentTemplateCompletedEventSchema, o as SubagentTemplateInstanceSchema, p as SubagentTemplateSpawnRequestSchema, r as SubagentTemplateCreate, s as SubagentTemplateInstanceStatus, t as SubagentTemplate, u as SubagentTemplateSchema, v as SubagentTemplateUpdateSchema } from "../../schemas-ByssHRGU2.mjs";
2
- import { n as SubagentTemplateSubjects, t as SubagentTemplateKernelNamespace } from "../../namespace-6sIu5nBI2.mjs";
1
+ import { _ as SubagentTemplateUpdate, a as SubagentTemplateInstance, c as SubagentTemplateInstanceStatusSchema, d as SubagentTemplateSettingsSchemas, f as SubagentTemplateSpawnRequest, g as SubagentTemplateSummarySchema, h as SubagentTemplateSummary, i as SubagentTemplateCreateSchema, l as SubagentTemplateKernelSchemas, m as SubagentTemplateSpawnedEventSchema, n as SubagentTemplateCompletedEventSchema, o as SubagentTemplateInstanceSchema, p as SubagentTemplateSpawnRequestSchema, r as SubagentTemplateCreate, s as SubagentTemplateInstanceStatus, t as SubagentTemplate, u as SubagentTemplateSchema, v as SubagentTemplateUpdateSchema } from "../../schemas-DF_RgKLw2.mjs";
2
+ import { n as SubagentTemplateSubjects, t as SubagentTemplateKernelNamespace } from "../../namespace-D8P8Sxce2.mjs";
3
3
  export { type SubagentTemplate, SubagentTemplateCompletedEventSchema, type SubagentTemplateCreate, SubagentTemplateCreateSchema, type SubagentTemplateInstance, SubagentTemplateInstanceSchema, type SubagentTemplateInstanceStatus, SubagentTemplateInstanceStatusSchema, SubagentTemplateKernelNamespace, SubagentTemplateKernelSchemas, SubagentTemplateSchema, SubagentTemplateSettingsSchemas, type SubagentTemplateSpawnRequest, SubagentTemplateSpawnRequestSchema, SubagentTemplateSpawnedEventSchema, SubagentTemplateSubjects, type SubagentTemplateSummary, SubagentTemplateSummarySchema, type SubagentTemplateUpdate, SubagentTemplateUpdateSchema };
@@ -1,2 +1,2 @@
1
- import { n as SubagentTemplateSubjects, t as SubagentTemplateKernelNamespace } from "../../namespace-6sIu5nBI2.mjs";
1
+ import { n as SubagentTemplateSubjects, t as SubagentTemplateKernelNamespace } from "../../namespace-D8P8Sxce2.mjs";
2
2
  export { SubagentTemplateKernelNamespace, SubagentTemplateSubjects };
@@ -1,2 +1,2 @@
1
- import { _ as SubagentTemplateUpdate, a as SubagentTemplateInstance, c as SubagentTemplateInstanceStatusSchema, d as SubagentTemplateSettingsSchemas, f as SubagentTemplateSpawnRequest, g as SubagentTemplateSummarySchema, h as SubagentTemplateSummary, i as SubagentTemplateCreateSchema, l as SubagentTemplateKernelSchemas, m as SubagentTemplateSpawnedEventSchema, n as SubagentTemplateCompletedEventSchema, o as SubagentTemplateInstanceSchema, p as SubagentTemplateSpawnRequestSchema, r as SubagentTemplateCreate, s as SubagentTemplateInstanceStatus, t as SubagentTemplate, u as SubagentTemplateSchema, v as SubagentTemplateUpdateSchema } from "../../schemas-ByssHRGU2.mjs";
1
+ import { _ as SubagentTemplateUpdate, a as SubagentTemplateInstance, c as SubagentTemplateInstanceStatusSchema, d as SubagentTemplateSettingsSchemas, f as SubagentTemplateSpawnRequest, g as SubagentTemplateSummarySchema, h as SubagentTemplateSummary, i as SubagentTemplateCreateSchema, l as SubagentTemplateKernelSchemas, m as SubagentTemplateSpawnedEventSchema, n as SubagentTemplateCompletedEventSchema, o as SubagentTemplateInstanceSchema, p as SubagentTemplateSpawnRequestSchema, r as SubagentTemplateCreate, s as SubagentTemplateInstanceStatus, t as SubagentTemplate, u as SubagentTemplateSchema, v as SubagentTemplateUpdateSchema } from "../../schemas-DF_RgKLw2.mjs";
2
2
  export { SubagentTemplate, SubagentTemplateCompletedEventSchema, SubagentTemplateCreate, SubagentTemplateCreateSchema, SubagentTemplateInstance, SubagentTemplateInstanceSchema, SubagentTemplateInstanceStatus, SubagentTemplateInstanceStatusSchema, SubagentTemplateKernelSchemas, SubagentTemplateSchema, SubagentTemplateSettingsSchemas, SubagentTemplateSpawnRequest, SubagentTemplateSpawnRequestSchema, SubagentTemplateSpawnedEventSchema, SubagentTemplateSummary, SubagentTemplateSummarySchema, SubagentTemplateUpdate, SubagentTemplateUpdateSchema };
@@ -1 +1 @@
1
- import{B as e,n as t,r as n,t as r}from"../../tools-uAgIrqan.mjs";export{r as FILE_ACCESS_RULES_KEY,e as ToolRegistry,n as createToolContributionProcessor,t as extractToolFilePath};
1
+ import{B as e,n as t,r as n,t as r}from"../../tools-DFOsOboy.mjs";export{r as FILE_ACCESS_RULES_KEY,e as ToolRegistry,n as createToolContributionProcessor,t as extractToolFilePath};
@@ -1 +1 @@
1
- import{A as e,F as t,G as n,H as r,I as i,L as ee,P as a,U as o,at as s,it as c,j as l,nt as u,ot as d,y as f}from"./schemas-BWasvfw2.mjs";import"./compression-DMoeVgKx.mjs";import{t as p}from"./schemas-XeIBqwvE.mjs";import{i as m}from"./account-identity-D5TUafYg.mjs";import{CompressSessionLineageSchema as h,ForkSessionLineageSchema as g,RootSessionLineageSchema as _,SubagentSessionLineageSchema as v}from"./contracts/adapter/schemas/session-lineage.mjs";import{t as y}from"./storage-namespace-definition-CzXPW45M.mjs";import{z as b}from"zod";import{createBusNamespace as x}from"@makaio/framework/core";const S=x(`session`,f),C=S.subjects;function w(e){return l.includes(e.type)}const T=`ui-warnings`,E=`connector-swap-warning-suppressed`,D=1440*60*1e3,O={cancel:`cancel`,edit:`edit`,continue:`continue`},k=`CONNECTOR_SWAP_CANCELLED`;var A=class extends Error{code=k;constructor(){super(`Connector swap cancelled by user`),this.name=`ConnectorSwapCancelledError`}};function j(e){return e instanceof A||e instanceof Error&&`code`in e&&e.code===`CONNECTOR_SWAP_CANCELLED`}const M={branch:{label:`branch`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},subagent:{label:`subagent`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},fork:{label:`fork`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},compress:{label:`compress`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},rewrite:{label:`rewrite`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},coordinator:{label:`coordinator`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1},aside:{label:`aside`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1}};function N(e){return e!=null&&M[e].staysInView}function P(e){return e==null||M[e].navigatesToChild}function F(e){return e!=null&&M[e].canMergeBack}function te(e){return M[e]}const I=b.object({timestamp:b.number(),messageId:b.string()}),L=y(`message`,{schemas:{append:{request:b.object({message:n.omit({messageId:!0}).extend({messageId:b.string().optional()}),emitEvent:b.boolean().optional()}),response:b.object({message:n})},getBySession:{request:b.object({sessionId:b.string(),limit:b.number().int().min(1).optional(),after:I.optional(),includeAfter:b.boolean().optional(),order:b.enum([`asc`,`desc`]).optional()}),response:b.object({messages:b.array(n),nextCursor:I.nullable()})},getByTurn:{request:b.object({turnId:b.string()}),response:b.object({messages:b.array(n)})},get:{request:b.object({messageId:b.string()}),response:b.object({message:n.nullable()})},getByAdapterMessageId:{request:b.object({adapterMessageId:b.string()}),response:b.object({message:n.nullable()})},search:{request:b.object({query:b.string(),sessionId:b.string().optional(),limit:b.number().int().min(1).optional()}),response:b.object({messages:b.array(n),total:b.number()})},ftsSearch:{request:b.object({query:b.string(),sessionId:b.string().optional(),limit:b.number().int().min(1).optional().default(20)}),response:b.object({results:b.array(b.object({messageId:b.string(),sessionId:b.string(),score:b.number(),excerpt:b.string()})),total:b.number()})},upsertByAdapterMessageId:{request:b.object({sessionId:b.string(),turnId:b.string().nullable(),adapterMessageId:b.string(),role:b.enum([`user`,`assistant`]),contentText:b.string(),blocks:b.array(r),agentId:b.string().optional(),adapterSessionId:b.string().optional(),timestamp:b.number(),origin:o.optional()}),response:b.object({messageId:b.string(),created:b.boolean()})},stored:b.object({message:n})}}),R=L.subjects;function z(e,t){return e.timestamp===t.timestamp?e.messageId.localeCompare(t.messageId):e.timestamp-t.timestamp}function B(e,t){return z(t,e)}function V(e){return{timestamp:e.timestamp,messageId:e.messageId}}function H(e){return`${e.timestamp}:${e.messageId}`}const U=b.object({after:b.string().optional(),limit:b.number().int().min(1).optional(),types:b.array(b.string()).optional(),includeReasoning:b.boolean().optional(),order:b.enum([`asc`,`desc`]).optional()}),W=b.object({events:b.array(e),nextCursor:b.string().nullable(),totalCount:b.number().optional()}),G=y(`sessionEvent`,{schemas:{append:{request:b.object({event:e}),response:b.object({success:b.boolean()})},getEvents:{request:b.object({sessionId:b.string(),options:U.optional()}),response:W},getByIds:{request:b.object({sessionId:b.string(),eventIds:b.array(b.string())}),response:b.object({events:b.array(e)})},deleteBySession:{request:b.object({sessionId:b.string()}),response:b.object({success:b.boolean(),deletedCount:b.number().optional()})},getEventsBySessions:{request:b.object({sessionIds:b.array(b.string()),types:b.array(b.string()),limitPerSession:b.number().int().min(1).optional()}),response:b.object({eventsBySession:b.record(b.string(),b.array(e))})}}}),K=G.subjects,q=a.extend({preview:t});function J(e,t){e.clientAccountId!==void 0&&e.lastClientIdentityObservation===void 0&&t.addIssue({code:b.ZodIssueCode.custom,path:[`lastClientIdentityObservation`],message:`lastClientIdentityObservation is required when clientAccountId is provided`}),e.clientAccountId!==void 0&&e.clientId===void 0&&t.addIssue({code:b.ZodIssueCode.custom,path:[`clientId`],message:`clientId is required when clientAccountId is provided`})}const Y=a.superRefine((e,t)=>{J(e,t)}),X=b.object({sessionId:b.string(),session:Y,ifAbsent:b.boolean().optional()}).superRefine((e,t)=>{e.sessionId!==e.session.sessionId&&t.addIssue({code:b.ZodIssueCode.custom,path:[`session`,`sessionId`],message:`session.sessionId must match the top-level sessionId`})}),Z={request:b.object({sessionId:b.string(),status:b.enum([`active`,`closed`,`archived`,`discovered`]).optional(),parentSessionId:b.string().optional(),contextInheritance:d.optional(),rootSessionId:b.string().optional(),forkPointMessageId:b.string().optional(),branchKind:c.optional(),isOrchestrated:b.boolean().optional(),clientId:b.string().optional(),clientAccountId:b.string().optional(),lastClientIdentityObservation:m.optional(),executionTargetId:b.string().nullable().optional(),approvalPolicyOverride:p.nullable().optional(),title:b.string().optional(),targetWorkingDirectory:b.string().optional(),createdAt:b.number().finite().optional(),lastActivityAt:b.number().finite().optional(),metadata:i.nullable().optional(),spawningToolCallId:b.string().nullable().optional()}),response:b.object({success:b.boolean(),clientAccountChanged:b.boolean().optional()})},Q=b.object({externalSessionId:b.string(),source:b.string(),clientId:b.string().optional(),adapterId:b.string().optional(),cwd:b.string().nullable(),logFilePath:b.string().nullable().optional(),startedAt:b.number().finite().optional(),title:b.string().nullable().optional()}),ne=b.discriminatedUnion(`kind`,[Q.merge(_),Q.merge(g),Q.merge(v),Q.merge(h)]),$=y(`session`,{schemas:{get:{request:b.object({sessionId:b.string()}),response:b.object({session:a.nullable()})},set:{request:X,response:b.object({success:b.boolean(),clientAccountChanged:b.boolean().optional()})},delete:{request:b.object({sessionId:b.string()}),response:b.object({success:b.boolean()})},list:{request:b.object({status:b.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:b.number().int().min(1).optional(),offset:b.number().int().min(0).optional(),includePreview:b.boolean().optional(),executionTargetId:b.string().optional()}),response:b.object({sessions:b.array(ee),total:b.number()})},getChildren:{request:b.object({sessionId:b.string()}),response:b.object({children:b.array(u)})},search:{request:b.object({query:b.string(),limit:b.number().int().min(1).optional(),status:b.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:b.boolean().optional()}),response:b.object({sessions:b.array(q),total:b.number()})},update:Z,getByAdapterSessionId:{request:b.object({adapterSessionId:b.string(),source:b.string().optional(),adapterName:b.string().optional()}),response:b.object({session:a.nullable()})},getStatusCounts:{request:b.object({}),response:b.object({all:b.number(),active:b.number(),closed:b.number(),archived:b.number(),discovered:b.number()})},importUpsert:{request:ne,response:b.object({sessionId:b.string(),created:b.boolean()})},getByLogFilePath:{request:b.object({logFilePath:b.string()}),response:b.object({session:a.nullable()})},listImported:{request:b.object({source:b.string().optional(),importStatus:s.optional()}),response:b.object({sessions:b.array(a)})},countBySource:{request:b.object({source:b.string()}),response:b.object({total:b.number(),imported:b.number(),discovered:b.number(),tracking:b.number()})},updateImportStatus:{request:b.object({sessionId:b.string(),importStatus:s}),response:b.object({success:b.boolean()})}}}),re=$.subjects;export{E as C,S as D,w as E,C as O,O as S,T,F as _,Z as a,A as b,z as c,V as d,I as f,N as g,te as h,re as i,B as l,R as m,X as n,G as o,L as p,Y as r,K as s,$ as t,H as u,P as v,D as w,j as x,k as y};
1
+ import{A as e,F as t,G as n,H as r,I as i,L as ee,P as a,U as o,at as s,it as c,j as l,nt as u,ot as d,y as f}from"./schemas-yNBjlOKi.mjs";import"./compression-CXEHx0rS.mjs";import{t as p}from"./schemas-XeIBqwvE.mjs";import{i as m}from"./account-identity-D5TUafYg.mjs";import{CompressSessionLineageSchema as h,ForkSessionLineageSchema as g,RootSessionLineageSchema as _,SubagentSessionLineageSchema as v}from"./contracts/adapter/schemas/session-lineage.mjs";import{t as y}from"./storage-namespace-definition-CzXPW45M.mjs";import{z as b}from"zod";import{createBusNamespace as x}from"@makaio/framework/core";const S=x(`session`,f),C=S.subjects;function w(e){return l.includes(e.type)}const T=`ui-warnings`,E=`connector-swap-warning-suppressed`,D=1440*60*1e3,O={cancel:`cancel`,edit:`edit`,continue:`continue`},k=`CONNECTOR_SWAP_CANCELLED`;var A=class extends Error{code=k;constructor(){super(`Connector swap cancelled by user`),this.name=`ConnectorSwapCancelledError`}};function j(e){return e instanceof A||e instanceof Error&&`code`in e&&e.code===`CONNECTOR_SWAP_CANCELLED`}const M={branch:{label:`branch`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},subagent:{label:`subagent`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},fork:{label:`fork`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},compress:{label:`compress`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},rewrite:{label:`rewrite`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},coordinator:{label:`coordinator`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1},aside:{label:`aside`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1}};function N(e){return e!=null&&M[e].staysInView}function P(e){return e==null||M[e].navigatesToChild}function F(e){return e!=null&&M[e].canMergeBack}function te(e){return M[e]}const I=b.object({timestamp:b.number(),messageId:b.string()}),L=y(`message`,{schemas:{append:{request:b.object({message:n.omit({messageId:!0}).extend({messageId:b.string().optional()}),emitEvent:b.boolean().optional()}),response:b.object({message:n})},getBySession:{request:b.object({sessionId:b.string(),limit:b.number().int().min(1).optional(),after:I.optional(),includeAfter:b.boolean().optional(),order:b.enum([`asc`,`desc`]).optional()}),response:b.object({messages:b.array(n),nextCursor:I.nullable()})},getByTurn:{request:b.object({turnId:b.string()}),response:b.object({messages:b.array(n)})},get:{request:b.object({messageId:b.string()}),response:b.object({message:n.nullable()})},getByAdapterMessageId:{request:b.object({adapterMessageId:b.string()}),response:b.object({message:n.nullable()})},search:{request:b.object({query:b.string(),sessionId:b.string().optional(),limit:b.number().int().min(1).optional()}),response:b.object({messages:b.array(n),total:b.number()})},ftsSearch:{request:b.object({query:b.string(),sessionId:b.string().optional(),limit:b.number().int().min(1).optional().default(20)}),response:b.object({results:b.array(b.object({messageId:b.string(),sessionId:b.string(),score:b.number(),excerpt:b.string()})),total:b.number()})},upsertByAdapterMessageId:{request:b.object({sessionId:b.string(),turnId:b.string().nullable(),adapterMessageId:b.string(),role:b.enum([`user`,`assistant`]),contentText:b.string(),blocks:b.array(r),agentId:b.string().optional(),adapterSessionId:b.string().optional(),timestamp:b.number(),origin:o.optional()}),response:b.object({messageId:b.string(),created:b.boolean()})},stored:b.object({message:n})}}),R=L.subjects;function z(e,t){return e.timestamp===t.timestamp?e.messageId.localeCompare(t.messageId):e.timestamp-t.timestamp}function B(e,t){return z(t,e)}function V(e){return{timestamp:e.timestamp,messageId:e.messageId}}function H(e){return`${e.timestamp}:${e.messageId}`}const U=b.object({after:b.string().optional(),limit:b.number().int().min(1).optional(),types:b.array(b.string()).optional(),includeReasoning:b.boolean().optional(),order:b.enum([`asc`,`desc`]).optional()}),W=b.object({events:b.array(e),nextCursor:b.string().nullable(),totalCount:b.number().optional()}),G=y(`sessionEvent`,{schemas:{append:{request:b.object({event:e}),response:b.object({success:b.boolean()})},getEvents:{request:b.object({sessionId:b.string(),options:U.optional()}),response:W},getByIds:{request:b.object({sessionId:b.string(),eventIds:b.array(b.string())}),response:b.object({events:b.array(e)})},deleteBySession:{request:b.object({sessionId:b.string()}),response:b.object({success:b.boolean(),deletedCount:b.number().optional()})},getEventsBySessions:{request:b.object({sessionIds:b.array(b.string()),types:b.array(b.string()),limitPerSession:b.number().int().min(1).optional()}),response:b.object({eventsBySession:b.record(b.string(),b.array(e))})}}}),K=G.subjects,q=a.extend({preview:t});function J(e,t){e.clientAccountId!==void 0&&e.lastClientIdentityObservation===void 0&&t.addIssue({code:b.ZodIssueCode.custom,path:[`lastClientIdentityObservation`],message:`lastClientIdentityObservation is required when clientAccountId is provided`}),e.clientAccountId!==void 0&&e.clientId===void 0&&t.addIssue({code:b.ZodIssueCode.custom,path:[`clientId`],message:`clientId is required when clientAccountId is provided`})}const Y=a.superRefine((e,t)=>{J(e,t)}),X=b.object({sessionId:b.string(),session:Y,ifAbsent:b.boolean().optional()}).superRefine((e,t)=>{e.sessionId!==e.session.sessionId&&t.addIssue({code:b.ZodIssueCode.custom,path:[`session`,`sessionId`],message:`session.sessionId must match the top-level sessionId`})}),Z={request:b.object({sessionId:b.string(),status:b.enum([`active`,`closed`,`archived`,`discovered`]).optional(),parentSessionId:b.string().optional(),contextInheritance:d.optional(),rootSessionId:b.string().optional(),forkPointMessageId:b.string().optional(),branchKind:c.optional(),isOrchestrated:b.boolean().optional(),clientId:b.string().optional(),clientAccountId:b.string().optional(),lastClientIdentityObservation:m.optional(),executionTargetId:b.string().nullable().optional(),approvalPolicyOverride:p.nullable().optional(),title:b.string().optional(),targetWorkingDirectory:b.string().optional(),createdAt:b.number().finite().optional(),lastActivityAt:b.number().finite().optional(),metadata:i.nullable().optional(),spawningToolCallId:b.string().nullable().optional()}),response:b.object({success:b.boolean(),clientAccountChanged:b.boolean().optional()})},Q=b.object({externalSessionId:b.string(),source:b.string(),clientId:b.string().optional(),adapterId:b.string().optional(),cwd:b.string().nullable(),logFilePath:b.string().nullable().optional(),startedAt:b.number().finite().optional(),title:b.string().nullable().optional()}),ne=b.discriminatedUnion(`kind`,[Q.merge(_),Q.merge(g),Q.merge(v),Q.merge(h)]),$=y(`session`,{schemas:{get:{request:b.object({sessionId:b.string()}),response:b.object({session:a.nullable()})},set:{request:X,response:b.object({success:b.boolean(),clientAccountChanged:b.boolean().optional()})},delete:{request:b.object({sessionId:b.string()}),response:b.object({success:b.boolean()})},list:{request:b.object({status:b.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:b.number().int().min(1).optional(),offset:b.number().int().min(0).optional(),includePreview:b.boolean().optional(),executionTargetId:b.string().optional()}),response:b.object({sessions:b.array(ee),total:b.number()})},getChildren:{request:b.object({sessionId:b.string()}),response:b.object({children:b.array(u)})},search:{request:b.object({query:b.string(),limit:b.number().int().min(1).optional(),status:b.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:b.boolean().optional()}),response:b.object({sessions:b.array(q),total:b.number()})},update:Z,getByAdapterSessionId:{request:b.object({adapterSessionId:b.string(),source:b.string().optional(),adapterName:b.string().optional()}),response:b.object({session:a.nullable()})},getStatusCounts:{request:b.object({}),response:b.object({all:b.number(),active:b.number(),closed:b.number(),archived:b.number(),discovered:b.number()})},importUpsert:{request:ne,response:b.object({sessionId:b.string(),created:b.boolean()})},getByLogFilePath:{request:b.object({logFilePath:b.string()}),response:b.object({session:a.nullable()})},listImported:{request:b.object({source:b.string().optional(),importStatus:s.optional()}),response:b.object({sessions:b.array(a)})},countBySource:{request:b.object({source:b.string()}),response:b.object({total:b.number(),imported:b.number(),discovered:b.number(),tracking:b.number()})},updateImportStatus:{request:b.object({sessionId:b.string(),importStatus:s}),response:b.object({success:b.boolean()})}}}),re=$.subjects;export{E as C,S as D,w as E,C as O,O as S,T,F as _,Z as a,A as b,z as c,V as d,I as f,N as g,te as h,re as i,B as l,R as m,X as n,G as o,L as p,Y as r,K as s,$ as t,H as u,P as v,D as w,j as x,k as y};
@@ -13,9 +13,9 @@ declare const SUBAGENT_SESSION_LINEAGE_KIND: "subagent";
13
13
  declare const COMPRESS_SESSION_LINEAGE_KIND: "compress";
14
14
  /** Discriminates the relationship of a session to its parent. */
15
15
  declare const SessionLineageKindSchema: z.ZodEnum<{
16
+ root: "root";
16
17
  fork: "fork";
17
18
  subagent: "subagent";
18
- root: "root";
19
19
  compress: "compress";
20
20
  }>;
21
21
  type SessionLineageKind = z.infer<typeof SessionLineageKindSchema>;
@@ -51,6 +51,14 @@ interface ToolExecutionContext extends MakaioContext {
51
51
  * Preferred when the caller wants stable logical adapter identity.
52
52
  */
53
53
  adapterName?: string;
54
+ /**
55
+ * Provider-assigned session identifier for the originating adapter session.
56
+ * Distinct from {@link sessionId} (Makaio-managed orchestration session) and
57
+ * from {@link adapterId} (adapter instance identifier).
58
+ * Allows tools to correlate their execution with the specific provider session
59
+ * that issued the tool call (e.g., Claude Code session UUID, Anthropic conversation ID).
60
+ */
61
+ adapterSessionId?: string;
54
62
  /**
55
63
  * Turn identifier for attribution (optional).
56
64
  * Provided when tool execution occurs within a specific turn.
@@ -1 +1 @@
1
- import{SessionStorageSubjects as e}from"./services/session/storage/namespace.mjs";import{x as t}from"./handlers-BAycjV02.mjs";import{A as n,G as r,K as i,L as a,Y as o,a as s,b as c,c as l,i as u,n as d,p as f,r as ee,w as te,z as ne}from"./session-0nWT4st6.mjs";import{n as p}from"./namespace-DBHwyhME.mjs";import{t as re}from"./capability-service-XlymTzz1.mjs";import"./services/adapter-subsystem/index.mjs";import{i as ie,s as ae}from"./model-registry-rYICIwyR.mjs";import{t as oe}from"./tool-approval-service-DEQiipxj.mjs";import{t as se}from"./tray-menu-service-B2AxiQqL.mjs";import{r as m,t as h}from"./handler-2bPhRn0u.mjs";import{n as ce}from"./package-CF_Zm2v4.mjs";import{t as le}from"./filesystem-service-Bmyqo6po.mjs";import{z as g}from"zod";import{createHash as ue}from"node:crypto";import{MakaioError as de,createMakaioContext as fe}from"@makaio/framework/core";import{MakaioBus as _}from"@makaio/framework/bus";import{AdapterSubjects as pe,ArtifactSubjects as v,CanonicalModelSubjects as me,DEFAULT_HARNESSES as he,HarnessDefinitionCreateSchema as ge,HarnessSubjects as y,JsonValueSchema as _e,ToolSubjects as b,TransitionRuleDefinitionSchema as ve,WorkflowBlocksSubjects as ye,WorkflowSubjects as be,dep as x,extensionToken as S,validateToolAdapterIdentity as xe,zodSchemaToJsonRecord as C}from"@makaio/framework/contracts";import{BaseService as w}from"@makaio/framework/service-base";import{registerDrizzleHandlers as T}from"@makaio/framework/storage/drizzle";import{slugifyProviderConfigName as Se}from"@makaio/framework/contracts/config";import{ClientAccountIdentifierSchema as Ce,ClientSessionAccountObserveSchema as we,ClientSubjects as E}from"@makaio/framework/contracts/client";import{FacetSubjects as D}from"@makaio/framework/contracts/facet";import{MaterializationSubjects as O}from"@makaio/framework/contracts/materialization";import{FILE_ACCESS_RULES_KEY as Te,FILE_ACCESS_RULES_KEY as Ee,ToolErrorCodes as k,errorToToolResult as De,extractToolFilePath as Oe,toolError as A,toolSuccess as ke}from"@makaio/framework/tools";import{ConditionSchema as Ae,evaluate as je}from"@makaio/framework/rules";import{evaluateSync as Me}from"@makaio/framework/expression";import{GitService as Ne}from"@makaio/framework/git";const Pe=[{type:`supersedes`,symmetry:`asymmetric`},{type:`contradicts`,symmetry:`symmetric`},{type:`derives_from`,symmetry:`asymmetric`},{type:`responds_to`,symmetry:`asymmetric`},{type:`contains`,symmetry:`asymmetric`},{type:`refines`,symmetry:`asymmetric`},{type:`scopes`,symmetry:`asymmetric`},{type:`references`,symmetry:`asymmetric`},{type:`evidenced_by`,symmetry:`asymmetric`}],j={extension:0,"factory-repo":1,"target-repo":2},M={source:`extension`,ownerKey:`extension:bus`};function N(e){return`${e.source}:${e.ownerKey}`}function Fe(e,t){return e.source===t.source&&e.ownerKey===t.ownerKey}function P(e){return structuredClone(e)}function F(e,t){return`${e}@${t}`}var I=class extends w{kinds=new Map;kindContributions=new Map;nextKindContributionOrder=0;relationTypes=new Map;constructor(e){super(e)}async onInit(){for(let e of Pe)this.relationTypes.set(e.type,e);this.registerHandler(v.kind.register,e=>{this.registerKind(e.payload),e.setResult({registered:!0})}),this.registerHandler(v.kind.list,e=>{let{kind:t}=e.payload,n=[...this.kinds.values()].filter(e=>!t||e.kind===t).map(P);e.setResult({kinds:n})}),this.registerHandler(v[`relation-type`].register,e=>{this.storeRelationType(e.payload),e.setResult({registered:!0})}),this.registerHandler(v[`relation-type`].list,e=>{let{type:t}=e.payload,n=[...this.relationTypes.values()].filter(e=>!t||e.type===t).map(P);e.setResult({relationTypes:n})})}compareKindContributions(e,t){let n=j[e.owner.source]-j[t.owner.source];return n===0?e.owner.source===`extension`?t.order-e.order:e.order-t.order:n}findSameTierRepoConflict(e,t,n){return[...e.values()].find(e=>!Fe(e.owner,t)&&e.owner.source===t.source&&t.source!==`extension`&&e.order<=n)}recomputeKindWinner(e){let t=this.kindContributions.get(e),n=this.kinds.get(e);if(t===void 0||t.size===0){this.kindContributions.delete(e),this.kinds.delete(e),this.emitKindChangedFromKey(e,n);return}let r;for(let e of t.values())(r===void 0||this.compareKindContributions(e,r)<0)&&(r=e);let i=r;this.kinds.set(e,P(i.registration)),JSON.stringify(n)!==JSON.stringify(i.registration)&&this.bus.emit(v.kind.changed,{kind:i.registration.kind,schemaVersion:i.registration.schemaVersion})}emitKindChangedFromKey(e,t){t!==void 0&&this.bus.emit(v.kind.changed,{kind:t.kind,schemaVersion:t.schemaVersion})}registerKind(e,t=M){let n=F(e.kind,e.schemaVersion),r=this.kindContributions.get(n)??new Map,i=N(t),a=r.get(i),o=t.source===`extension`?this.nextKindContributionOrder:a?.order??this.nextKindContributionOrder,s=this.findSameTierRepoConflict(r,t,o);if(s!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${n}' is already registered by '${s.owner.ownerKey}' at the same priority; keeping the existing owner.`);return}r.set(i,{owner:t,registration:P(e),order:t.source===`extension`||a===void 0?this.nextKindContributionOrder++:a.order}),this.kindContributions.set(n,r),this.recomputeKindWinner(n)}deregisterKind(e,t,n=M){let r=F(e,t),i=this.kindContributions.get(r);i!==void 0&&(i.delete(N(n)),this.recomputeKindWinner(r))}replaceKindRegistrationsForOwner(e,t){let n=new Set,r=N(e),i=new Map;for(let[e,t]of this.kindContributions.entries()){let a=t.get(r);a!==void 0&&(i.set(e,a.order),t.delete(r),n.add(e))}for(let a of t){let t=F(a.kind,a.schemaVersion),o=this.kindContributions.get(t)??new Map,s=e.source===`extension`?void 0:i.get(t),c=s??this.nextKindContributionOrder,l=this.findSameTierRepoConflict(o,e,c);if(l!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${t}' is already registered by '${l.owner.ownerKey}' at the same priority; keeping the existing owner.`);continue}o.set(r,{owner:e,registration:P(a),order:s??this.nextKindContributionOrder++}),this.kindContributions.set(t,o),n.add(t)}for(let e of n)this.recomputeKindWinner(e)}storeRelationType(e){let t=this.relationTypes.get(e.type);if(t){if(t.symmetry!==e.symmetry)throw Error(`Relation type '${e.type}' is already registered with different symmetry (existing: '${t.symmetry}', new: '${e.symmetry}')`);return}this.relationTypes.set(e.type,P(e))}getKind(e,t){let n=this.kinds.get(F(e,t));return n?P(n):void 0}getRelationType(e){let t=this.relationTypes.get(e);return t?P(t):void 0}onDestroy(){this.kinds.clear(),this.kindContributions.clear(),this.relationTypes.clear(),this.nextKindContributionOrder=0}},L=class extends Error{reason;hookId;constructor(e,t){super(`Artifact write rejected by hook '${t}': ${e}`),this.reason=e,this.hookId=t,this.name=`ArtifactLifecycleHookRejectedError`}};function R(e,t){return e?!(e.kind!==void 0&&e.kind!==`*`&&e.kind!==t.kind||e.schemaVersion!==void 0&&e.schemaVersion!==t.schemaVersion):!0}function z(e){return e.priority??0}function Ie(e,t,n){return e.filter(e=>e.event===t&&R(e.filter,n)).sort((e,t)=>z(t)-z(e))}function Le(e,t,n){return e.filter(e=>e.event===t&&R(e.filter,n)).sort((e,t)=>z(t)-z(e))}function Re(e,t){return{...e,...`data`in t?{data:t.data}:{},...`relations`in t?{relations:t.relations}:{},...`confidence`in t?{confidence:t.confidence}:{},...`representations`in t?{representations:t.representations}:{},...`actor`in t?{actor:t.actor}:{}}}function ze(e,t){let{confidence:n,representations:r,...i}=e;return{...i,data:t.data,relations:[...t.relations],...t.confidence===void 0?{}:{confidence:t.confidence},...t.representations===void 0?{}:{representations:t.representations},actor:t.actor}}var B=class extends w{registrations=new Map;constructor(e){super(e)}async onInit(){}onDestroy(){this.registrations.clear()}registerHooks(e,t){let n=[...t];this.registrations.set(e,n);let r=!1;return()=>{r||(r=!0,this.registrations.get(e)===n&&this.registrations.delete(e))}}allHooks(){let e=[];for(let t of this.registrations.values())e.push(...t);return e}async runBeforeCreate(e){return this.runBeforeHooks(`beforeCreate`,e)}async runBeforeRevise(e){return this.runBeforeHooks(`beforeRevise`,e)}async runBeforeHooks(e,t){let{draft:n,previous:r,kindRegistration:i}=t,a=Ie(this.allHooks(),e,n),o=new Map,s={kind:n.kind,schemaVersion:n.schemaVersion,scope:n.scope,data:n.data,relations:n.relations,...n.confidence===void 0?{}:{confidence:n.confidence},...n.representations===void 0?{}:{representations:n.representations},actor:n.actor},c=!1;for(let t of a){let n,a={event:e,get draft(){return s},previous:r,kindRegistration:i,bus:this.bus,meta:o,rejectCreation(e){n={reason:e}},skipMaterialization(){c=!0},updateDraft(e){s=Re(s,e)}};if(await t.handler(a),n)throw new L(n.reason,t.id)}return{draft:ze(n,s),skipMaterialization:c,meta:o}}async runAfterCreate(e){await this.runAfterHooks(`afterCreate`,`created`,e)}async runAfterRevise(e){await this.runAfterHooks(`afterRevise`,`revised`,e)}async runAfterStatusChanged(e){await this.runAfterHooks(`afterStatusChanged`,`status-changed`,e)}async runAfterObservationAdded(e){await this.runAfterHooks(`afterObservationAdded`,`observation-added`,e)}async runAfterHooks(e,t,n){let{artifact:r,previous:i,observation:a,kindRegistration:o,projectionPolicy:s,skipDefaultProjection:c,meta:l}=n,u=Le(this.allHooks(),e,r),d=this.bus,f=!1;for(let n of u){if(c&&(n.priority??0)<0||f&&(n.priority??0)<0)continue;let u={event:e,semanticEvent:t,artifact:r,previous:i?{refClass:`artifact`,id:i.id,revision:i.revision,kind:i.kind}:void 0,observation:a,kindRegistration:o,projectionPolicy:s,bus:d,meta:l,preventDefault(){f=!0},async resolveRelations(e){let t=r.relations.filter(t=>t.type===e).map(e=>e.target),n=[];for(let e of t){let t=e;if(t.refClass===`artifact`){let e=t,{artifact:r}=await d.request(v.resolve,{ref:e});r&&n.push(r)}}return n}};try{await n.handler(u)}catch(t){console.error(`[ArtifactLifecycleHookRegistry] Hook '${n.id}' threw during '${e}':`,t)}}}};function V(e){return structuredClone(e)}var Be=class extends w{namespaces=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(D.namespace.register,e=>{this.registerNamespace(e.payload),e.setResult({registered:!0})}),this.registerHandler(D.namespace.list,e=>{let{namespace:t}=e.payload,n=[...this.namespaces.values()].filter(e=>!t||e.namespace===t).map(V);e.setResult({namespaces:n})})}registerNamespace(e){let t=this.namespaces.get(e.namespace);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Facet namespace '${e.namespace}' is already registered with a different definition`);return}this.namespaces.set(e.namespace,V(e)),this.bus.emit(D.namespace.changed,{namespace:e.namespace})}deregisterNamespace(e){this.namespaces.delete(e)&&this.bus.emit(D.namespace.changed,{namespace:e})}getNamespace(e){let t=this.namespaces.get(e);return t?V(t):void 0}onDestroy(){this.namespaces.clear()}};function H(e){return structuredClone(e)}var Ve=class extends w{bindings=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(O.surfaceBinding.register,e=>{this.registerBinding(e.payload),e.setResult({registered:!0})}),this.registerHandler(O.surfaceBinding.list,e=>{let{provider:t,namespace:n}=e.payload,r=[...this.bindings.values()].filter(e=>(!t||e.provider===t)&&(!n||e.namespace===n)).map(H);e.setResult({bindings:r})})}registerBinding(e){let t=this.bindings.get(e.id);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Surface binding '${e.id}' is already registered with a different definition`);return}this.bindings.set(e.id,H(e)),this.bus.emit(O.surfaceBinding.changed,{id:e.id,provider:e.provider})}deregisterBinding(e){let t=this.bindings.get(e);t&&(this.bindings.delete(e),this.bus.emit(O.surfaceBinding.changed,{id:e,provider:t.provider}))}getBinding(e){let t=this.bindings.get(e);return t?H(t):void 0}onDestroy(){this.bindings.clear()}},U=class extends de{code;suggestions;constructor(e,t,n){super(e),this.code=t,this.suggestions=n}},He=class{deps;constructor(e){this.deps=e}async resolve(e,t){switch(e.kind){case`bare`:return this.resolveBare(e.model);case`qualified`:return this.resolveQualified(e.segment1,e.segment2,e.model)}}async resolveBare(e){let t=await this.deps.resolveDefaultModelTarget(e);switch(t.kind){case`resolved`:return{kind:`adapter`,adapterName:t.target.adapterName,providerConfigId:t.target.providerConfigId,model:t.target.model};case`ambiguous`:throw new U(`Model "${e}" is available via multiple providers. Use a qualified reference to select one.`,`ambiguous-model`,t.matches.map(e=>e.qualifiedName));case`not-found`:throw new U(`Model "${e}" was not found in any enabled adapter's registry.`,`model-not-found`)}}async resolveQualified(e,t,n){return t===void 0?this.resolveQualifiedOneSegment(e,n):this.resolveQualifiedTwoSegments(e,t,n)}async resolveQualifiedTwoSegments(e,t,n){let r=await this.deps.listEnabledAdapterNames();if(!r.includes(e))throw new U(`Adapter "${e}" is not enabled or does not exist.`,`adapter-not-found`);return{kind:`adapter`,adapterName:e,providerConfigId:await this.resolveProviderSegment(t,e,r),model:n}}async resolveQualifiedOneSegment(e,t){let n=await this.deps.listEnabledAdapterNames();if(n.includes(e)){let n=await this.deps.getDefaultBinding(e);if(!n)throw new U(`Adapter "${e}" has no enabled provider binding. Configure or enable a provider binding first.`,`no-binding`);return{kind:`adapter`,adapterName:e,providerConfigId:n.providerConfigId,model:t}}let r=await this.deps.findProviderConfigByName(e);if(r)return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t};let i=await this.deps.findProviderDefinition(e,n);if(i){let r=await this.deps.findDefaultConfigForDefinition(i.id);if(!r)throw new U(`Provider definition "${e}" exists but has no configured provider config. Create a provider config first.`,`provider-not-found`);return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t}}throw new U(`"${e}" does not match any enabled adapter name, provider config name, or provider definition ID.`,`adapter-not-found`)}async resolveProviderSegment(e,t,n){let r=await this.deps.findProviderConfigByName(e);if(r)return await this.requireBindingForAdapterAndConfig(t,r.id,e),r.id;let i=await this.deps.findProviderDefinition(e,n);if(i){let n=await this.deps.findConfigForDefinitionAndAdapter(i.id,t);if(!n)throw new U(`Provider definition "${e}" has no enabled config bound to adapter "${t}". Create a provider config and binding first.`,`no-binding`);return n.id}throw new U(`"${e}" does not match any provider config name or provider definition ID.`,`provider-not-found`)}async requireBindingForAdapterAndConfig(e,t,n){if(!(await this.deps.listBindingsForConfig(t)).some(t=>t.adapterName===e))throw new U(`No binding exists between adapter "${e}" and provider "${n}". Create a binding first.`,`no-binding`)}async pickBindingForConfig(e,t){let n=(await this.deps.listBindingsForConfig(e)).filter(e=>t.includes(e.adapterName));if(n.length===0)throw new U(`Provider config "${e}" has no bindings to enabled adapters. Bind it to an enabled adapter first.`,`no-binding`);return n.find(e=>e.isDefault)??n[0]}},Ue=class e extends w{constructor(e=_){super(e)}async onInit(){await this.bus.request(p.ensureReady,{});let e=new He(this.createDeps());this.registerHandler(me.resolve,async t=>{let n=await e.resolve(t.payload.parsed,t.payload.context);t.setResult(n)})}createDeps(){let e=this.bus,t=async()=>{let{adapters:t}=await e.request(p.listAdapters,{});return t.filter(e=>e.enabled).map(e=>e.name)},n=async t=>{let[n,r]=await Promise.all([e.request(p.getDefaultBinding,{adapterName:t}),this.listEnabledProviderConfigIds()]);if(n.binding&&r.has(n.binding.providerConfigId))return n.binding;let{bindings:i}=await e.request(p.listBindings,{adapterName:t}),a=i.filter(e=>r.has(e.providerConfigId));return a.find(e=>e.isDefault)??a[0]},r=async t=>{let{definitions:n}=await e.request(p.getProviderDefinitionsByAdapter,{adapterName:t});return n},i=async t=>{let{bindings:n}=await e.request(p.listBindingsByConfig,{providerConfigId:t});return n},a=async t=>{let{configs:n}=await e.request(p.listProviderConfigs,{enabled:!0}),r=Se(t);return n.find(e=>Se(e.name)===r)},o=this.buildFindProviderDefinition(t,r),s=async t=>{let{configs:n}=await e.request(p.listProviderConfigsByDefinition,{definitionId:t}),r=n.filter(e=>e.enabled);return r.find(e=>e.isDefault)??r[0]},c=async(t,n)=>{let{config:r}=await e.request(p.findConfigForDefinitionAndAdapter,{definitionId:t,adapterName:n});return r?{id:r.id}:void 0};return{listEnabledAdapterNames:t,getDefaultBinding:n,findProviderConfigByName:a,findProviderDefinition:o,listBindingsForConfig:i,findDefaultConfigForDefinition:s,findConfigForDefinitionAndAdapter:c,resolveDefaultModelTarget:this.buildResolveDefaultModelTarget(t,r,c)}}buildFindProviderDefinition(e,t){return async(n,r)=>{let i=r??await e();for(let e of i){let r=(await t(e)).find(e=>e.id===n);if(r)return r}}}buildResolveDefaultModelTarget(t,n,r){let i=this.bus;return async a=>{let o=await t(),s=await Promise.all(o.map(async e=>({adapterName:e,definitions:await n(e)}))),c=Array.from(new Set(s.flatMap(({definitions:e})=>e.map(e=>e.id))));if(c.length===0)return{kind:`not-found`};let{matches:l}=await i.request(ae.checkModelInProviders,{providerIds:c,model:a}),u=(await Promise.all(s.map(({adapterName:e,definitions:t})=>this.collectAdapterCandidates(e,t,a,l,r)))).flat();return e.buildResolution(u)}}async collectAdapterCandidates(e,t,n,r,i){let a=t.filter(e=>e.id in r),o=await Promise.all(a.map(t=>i(t.id,e)));return a.flatMap((t,r)=>{let i=o[r];return i?[{adapterName:e,definitionId:t.id,providerConfigId:i.id,qualifiedName:`${e}/${t.id}::${n}`,model:n}]:[]})}static buildResolution(e){let t=Array.from(new Map(e.map(e=>[this.routeKey(e),e])).values());if(t.length===0)return{kind:`not-found`};if(t.length>1)return{kind:`ambiguous`,matches:t.map(({adapterName:e,definitionId:t,qualifiedName:n})=>({adapterName:e,definitionId:t,qualifiedName:n}))};let[n]=t;return{kind:`resolved`,target:{adapterName:n.adapterName,providerConfigId:n.providerConfigId,definitionId:n.definitionId,model:n.model}}}static routeKey(e){return`${e.adapterName}\0${e.definitionId}\0${e.providerConfigId}`}async listEnabledProviderConfigIds(){let{configs:e}=await this.bus.request(p.listProviderConfigs,{enabled:!0});return new Set(e.map(e=>e.id))}};const W={name:`makaio.canonical-model`,displayName:`Canonical Model`,version:`0.1.0`,critical:!1,create:e=>new Ue(e.bus)};function We(e){let t=xe({adapterId:e?.adapterId,adapterName:e?.adapterName,contextOverrides:{adapterId:e?.contextOverrides?.adapterId,adapterName:e?.contextOverrides?.adapterName}}),n=t.issues[0];return n?A(k.VALIDATION_FAILED,n.message):ke(t.effectiveIdentity)}function Ge(e){let t=e?.allowedDirectories;if(Array.isArray(t))return t.filter(e=>typeof e==`string`)}async function Ke(e,t,n,r){let i=new Map;for(let e of t)i.set(e.name,await r(e.name));let a=t.filter(e=>{let t=i.get(e.name);return!t?.allowedAdapters||t.allowedAdapters.length===0?!0:t.allowedAdapters.includes(n)}),o=new Set(a.map(e=>e.name));return{filteredTools:e.filter(e=>!(!o.has(e.toolsetName)||i.get(e.toolsetName)?.disabledTools?.includes(e.name))),filteredToolsets:a}}function qe(){return`exec_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}var Je=class{bus;toolsets=new Map;tools=new Map;cleanupHandlers=[];handlerPriority;policyProvider;fileAccessRuleProvider;revision=0;constructor(e){this.bus=e?.bus??_,this.handlerPriority=e?.handlerPriority??0,this.policyProvider=e?.policyProvider,this.fileAccessRuleProvider=e?.fileAccessRuleProvider,this.registerHandlers()}registerHandlers(){let e=this.bus.on(b.list,async e=>{let{toolsetName:t,adapterId:n,adapterName:r}=e.payload,{tools:i,toolsets:a}=await this.listToolsWithToolsets({toolsetName:t,adapterId:n,adapterName:r});e.setResult({tools:i,toolsets:a})},{priority:this.handlerPriority});this.cleanupHandlers.push(e);let t=this.bus.on(b.execute,async e=>{let{toolName:t,input:n,adapterId:r,adapterName:i,contextOverrides:a}=e.payload,o=await this.execute(t,n,{contextOverrides:a,adapterId:r,adapterName:i});e.setResult(o)},{priority:this.handlerPriority});this.cleanupHandlers.push(t)}async register(e){if(this.toolsets.has(e.metadata.name))throw Error(`Toolset '${e.metadata.name}' is already registered`);let t=[],n=[];for(let[,r]of Object.entries(e.tools)){let i=r.metadata.name;if(this.tools.has(i))throw Error(`Tool '${i}' is already registered (from toolset '${this.tools.get(i).toolsetName}')`);n.push({tool:r,toolsetName:e.metadata.name}),t.push(i)}this.toolsets.set(e.metadata.name,e);for(let e=0;e<n.length;e+=1)this.tools.set(t[e],n[e]);await this.emitRegistryChanged(`toolset-registered`,e.metadata.name).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registryChanged.subject} for '${e.metadata.name}':`,t)),await this.bus.emit(b.registered,{toolsetName:e.metadata.name,toolsetVersion:e.metadata.version,toolNames:t}).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registered.subject} for '${e.metadata.name}':`,t))}async deregister(e){let t=this.toolsets.get(e);if(!t)throw Error(`Toolset '${e}' is not registered`);for(let e of Object.values(t.tools))this.tools.delete(e.metadata.name);this.toolsets.delete(e),await this.emitRegistryChanged(`toolset-unregistered`,e).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registryChanged.subject} for '${e}':`,t))}async emitRegistryChanged(e,t){this.revision+=1,await this.bus.emit(b.registryChanged,{revision:this.revision,reason:e,toolsetName:t})}async execute(e,t,n){let r=this.tools.get(e);if(!r)return A(k.TOOL_NOT_FOUND,`Tool '${e}' not found`);let i=We(n);if(!i.success)return i;let{tool:a,toolsetName:o}=r,s=await this.checkPolicy(o,e,i.data.adapterId,i.data.adapterName);if(s)return s;let c=qe(),l=Date.now();await this.bus.emit(b.started,{toolName:e,toolsetName:o,executionId:c,timestamp:l});try{let r=a.inputSchema.safeParse(t);if(!r.success){let t=A(k.VALIDATION_FAILED,`Input validation failed`,{issues:r.error.issues});return await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:t.error}),t}let s=await this.buildExecutionContext(n,i.data),u=await a.execute(r.data,s);return u.success?await this.bus.emit(b.completed,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),durationMs:Date.now()-l}):await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:u.error}),u}catch(t){let n=De(t);return await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:n.error}),n}}async buildExecutionContext(e,t){let n=e?.contextOverrides?.constraints;if(this.fileAccessRuleProvider){let t=e?.contextOverrides?.cwd??process.cwd(),r=Ge(n),i=await this.fileAccessRuleProvider(t,r);n={...n,[Te]:i}}let r=fe({...e?.contextOverrides,constraints:n}),i=e?.contextOverrides;return{...r,bus:this.bus,sessionId:i?.sessionId,agentId:i?.agentId,adapterId:t.adapterId,adapterName:t.adapterName,turnId:i?.turnId,turnContext:i?.turnContext,toolCallId:i?.toolCallId}}async checkPolicy(e,t,n,r){if(!this.policyProvider)return null;let i=await this.policyProvider(e);if(!i)return null;if(i.disabledTools?.includes(t))return A(k.PERMISSION_DENIED,`Tool '${t}' is disabled`,{toolsetName:e,toolName:t});if(i.allowedAdapters&&i.allowedAdapters.length>0){let t=r??n;if(!t||!i.allowedAdapters.includes(t))return A(k.PERMISSION_DENIED,`Adapter not allowed for toolset '${e}'`,{toolsetName:e,adapterId:n,adapterName:r,allowedAdapters:i.allowedAdapters})}return null}listTools(e){let t=[];for(let[,n]of this.tools){if(e?.toolsetName&&n.toolsetName!==e.toolsetName)continue;let{$schema:r,...i}=g.toJSONSchema(n.tool.inputSchema);t.push({name:n.tool.metadata.name,description:n.tool.metadata.description,toolsetName:n.toolsetName,annotations:n.tool.metadata.annotations,inputSchema:i})}return t}listToolsets(){let e=[];for(let[,t]of this.toolsets){let n={name:t.metadata.name,description:t.metadata.description,version:t.metadata.version,toolCount:Object.keys(t.tools).length};if(t.configSchema){let{$schema:e,...r}=g.toJSONSchema(t.configSchema);n.configSchema=r}e.push(n)}return e}async listToolsWithToolsets(e){let t=this.listTools(e),n=this.listToolsets(),r=e?.toolsetName?n.filter(t=>t.name===e.toolsetName):n,i=e?.adapterName??e?.adapterId;if(this.policyProvider&&i){let{filteredTools:e,filteredToolsets:n}=await Ke(t,r,i,this.policyProvider);return{tools:e,toolsets:n}}return{tools:t,toolsets:r}}getTool(e){return this.tools.get(e)?.tool}getToolset(e){return this.toolsets.get(e)}dispose(){for(let e of this.cleanupHandlers)e();this.cleanupHandlers.length=0}destroy(){this.dispose()}},Ye=class extends w{triggersByExtension=new Map;stepsByExtension=new Map;revision=0;cache=null;constructor(e){super(e)}onInit(){this.registerHandler(ye.list,e=>{e.setResult({triggers:this.listTriggers(),steps:this.listSteps()})})}async register(e,t){let n=[],r=[],i=this.snapshotExtensionState(e),a=new Set;for(let e of this.triggersByExtension.values())for(let t of e)a.add(t.metadata.name);for(let e of this.stepsByExtension.values())for(let t of e)a.add(t.metadata.name);if(t.triggers)for(let r of t.triggers)this.assertExtensionNamespace(e,r.metadata),this.assertNoCollision(r.metadata,a),a.add(r.metadata.name),n.push({metadata:{...r.metadata,extensionName:e},configSchema:C(r.configSchema),outputSchema:C(r.outputSchema)});if(t.steps)for(let n of t.steps)this.assertExtensionNamespace(e,n.metadata),this.assertNoCollision(n.metadata,a),a.add(n.metadata.name),r.push({metadata:{...n.metadata,extensionName:e},configSchema:C(n.configSchema),inputSchema:C(n.inputSchema),outputSchema:C(n.outputSchema),runs:structuredClone(n.runs)});if(n.length>0&&this.triggersByExtension.set(e,n),r.length>0&&this.stepsByExtension.set(e,r),n.length>0||r.length>0){this.revision+=1;try{await this.emitChanged(e,`registered`)}catch(t){throw this.restoreExtensionState(e,i),t}}}async deregister(e){let t=this.snapshotExtensionState(e),n=this.triggersByExtension.delete(e),r=this.stepsByExtension.delete(e);if(n||r){this.revision+=1;try{await this.emitChanged(e,`deregistered`)}catch(n){throw this.restoreExtensionState(e,t),n}}}listTriggers(){return this.getCache().triggers.map(Xe)}listSteps(){return this.getCache().steps.map(Ze)}async emitChanged(e,t){await this.bus.emit(ye.changed,{extensionName:e,revision:this.revision,reason:t})}getCache(){return(!this.cache||this.cache.revision!==this.revision)&&(this.cache={revision:this.revision,triggers:[...this.triggersByExtension.values()].flat(),steps:[...this.stepsByExtension.values()].flat()}),this.cache}snapshotExtensionState(e){return{triggers:this.triggersByExtension.get(e),steps:this.stepsByExtension.get(e),revision:this.revision,cache:this.cache}}restoreExtensionState(e,t){t.triggers?this.triggersByExtension.set(e,t.triggers):this.triggersByExtension.delete(e),t.steps?this.stepsByExtension.set(e,t.steps):this.stepsByExtension.delete(e),this.revision=t.revision,this.cache=t.cache}assertNoCollision(e,t){if(t.has(e.name))throw Error(`Workflow block name collision: '${e.name}' is already registered`)}assertExtensionNamespace(e,t){let n=`${e}.`;if(!t.name.startsWith(n))throw Error(`Workflow block '${t.name}' must be namespaced by extension '${n}'`)}};function Xe(e){return{metadata:Qe(e.metadata),configSchema:structuredClone(e.configSchema),outputSchema:structuredClone(e.outputSchema)}}function Ze(e){return{metadata:Qe(e.metadata),configSchema:structuredClone(e.configSchema),inputSchema:structuredClone(e.inputSchema),outputSchema:structuredClone(e.outputSchema),runs:structuredClone(e.runs)}}function Qe(e){return e.categories?{...e,categories:[...e.categories]}:{...e}}const G=`workflow.start`;function $e(e){return()=>({async execute(t,n){let{input:r={},executionHints:i}=t,{workflowId:a}=r;if(typeof a!=`string`||a.length===0)throw Error(`[TransitionActionRegistry] 'workflow.start' action requires a non-empty 'input.workflowId' string`);await e.request(be.start,{workflowId:a,input:et(r,n),config:r.config,artifactRef:r.artifactRef,scope:r.scope,triggerPayload:{_transitionRuleId:n._transition.ruleId,_transitionDepth:n._transition.depth,_transitionEventType:n._transition.eventType},executionHints:i})}})}function et(e,t){let n=e.inputExpression;if(typeof n!=`string`)return e.input;let r=Me(n,tt(t)),i=_e.safeParse(r);if(!i.success)throw Error(`[TransitionActionRegistry] 'workflow.start' inputExpression for rule '${t._transition.ruleId}' must resolve to a JSON value`);return i.data}function tt(e){let t={...e};return{...t,ctx:t}}var nt=class{factories=new Map;factoriesBySource=new Map;constructor(e){this.factories.set(G,$e(e)),this.factoriesBySource.set(`__builtin__`,[G])}register(e,t){let n=Object.keys(t);if(n.length!==0){if(this.factoriesBySource.has(e))throw Error(`TransitionActionRegistry: duplicate source '${e}'`);for(let t of n)if(this.factories.has(t))throw Error(`TransitionActionRegistry: duplicate action type '${t}' from source '${e}'`);for(let e of n)this.factories.set(e,t[e]);this.factoriesBySource.set(e,n)}}deregister(e){if(e===`__builtin__`)return;let t=this.factoriesBySource.get(e);if(t){for(let e of t)this.factories.delete(e);this.factoriesBySource.delete(e)}}async dispatch(e,t){let n=this.factories.get(e.type);if(!n)throw Error(`TransitionActionRegistry: unknown action type '${e.type}'. Registered types: ${[...this.factories.keys()].join(`, `)}`);await n().execute(e,t)}has(e){return this.factories.has(e)}listTypes(){return[...this.factories.keys()]}},rt=class{rulesBySource=new Map;rulesByEventType=new Map;ruleIdSet=new Set;register(e,t){if(t.length===0)return;if(this.rulesBySource.has(e))throw Error(`TransitionRuleRegistry: duplicate source '${e}'`);let n=new Set,r=[];for(let i of t){let t=ve.parse(i);if(n.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' within source '${e}'`);if(this.ruleIdSet.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' from source '${e}'`);n.add(t.id),r.push({rule:t,condition:t.when===void 0?void 0:Ae.parse(t.when)})}for(let e of r){let{rule:t}=e;this.ruleIdSet.add(t.id);let n=this.rulesByEventType.get(t.on)??[];n.push(e),this.rulesByEventType.set(t.on,n)}this.rulesBySource.set(e,r)}deregister(e){let t=this.rulesBySource.get(e);if(t){for(let{rule:e}of t){this.ruleIdSet.delete(e.id);let t=this.rulesByEventType.get(e.on);if(t){let n=t.filter(t=>t.rule.id!==e.id);n.length>0?this.rulesByEventType.set(e.on,n):this.rulesByEventType.delete(e.on)}}this.rulesBySource.delete(e)}}getRulesForEvent(e){let t=this.rulesByEventType.get(e);return t?t.filter(e=>e.rule.enabled):[]}snapshotSource(e){let t=this.rulesBySource.get(e);if(t)return{ruleIds:t.map(e=>e.rule.id)}}},it=class extends w{ruleRegistry;actionRegistry;depthMap=new Map;constructor(e){super(e),this.ruleRegistry=new rt,this.actionRegistry=new nt(e)}onInit(){this.registerHandler(v.created,async e=>{await this.handleArtifactEvent(`artifact.created`,{artifact:e.payload.artifact})}),this.registerHandler(v.revised,async e=>{let t=await this.resolvePreviousRevisedArtifact(e.payload.previous);await this.handleArtifactEvent(`artifact.revised`,{artifact:e.payload.artifact,previous:e.payload.previous,...t===void 0?{}:{previousArtifact:t}})}),this.registerHandler(v.status.changed,async e=>{let t=await this.resolveStatusChangedArtifact(e.payload.artifact);t!==void 0&&await this.handleArtifactEvent(`artifact.status.changed`,{artifact:t,path:e.payload.path,previous:e.payload.previous,current:e.payload.current})})}async handleArtifactEvent(e,t){let n=this.artifactKey(t.artifact),r=this.readDepth(n);if(r>=10){console.warn(`[TransitionPipelineService] Transition depth limit (10) reached for event '${e}' on artifact '${n}'. Loop protection active — skipping rule evaluation.`);return}let i=this.ruleRegistry.getRulesForEvent(e);if(i.length!==0)for(let a of i)await this.evaluateAndDispatch(a,e,t,n,r)}async resolveStatusChangedArtifact(e){let t=await this.bus.requestOptional(v.resolve,{ref:e});if(!t.handled){console.warn(`[TransitionPipelineService] No artifact resolver is registered for status transition on artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}if(t.data.artifact===null){console.warn(`[TransitionPipelineService] Could not resolve status transition artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}return t.data.artifact}async resolvePreviousRevisedArtifact(e){let t=await this.bus.requestOptional(v.resolve,{ref:e});if(!(!t.handled||t.data.artifact===null))return t.data.artifact}async evaluateAndDispatch(e,t,n,r,i){let{rule:a,condition:o}=e,s={...n,_transition:{ruleId:a.id,eventType:t,depth:i+1}};if(o!==void 0){let e={...s},t;try{t=je(o,e)}catch(e){console.error(`[TransitionPipelineService] Condition evaluation error for rule '${a.id}':`,e);return}if(!t)return}try{await this.actionRegistry.dispatch(a.action,s),a.action.type===`workflow.start`&&this.incrementDepth(r)}catch(e){console.error(`[TransitionPipelineService] Action dispatch error for rule '${a.id}' (action type '${a.action.type}'):`,e)}}artifactKey(e){return`${typeof e.kind==`string`?e.kind:`unknown`}:${typeof e.id==`string`?e.id:`unknown`}`}readDepth(e){let t=this.depthMap.get(e);return t===void 0?0:Date.now()>t.expiresAt?(this.depthMap.delete(e),0):t.count}incrementDepth(e){let t=this.depthMap.get(e);this.depthMap.set(e,{count:t===void 0?1:t.count+1,expiresAt:Date.now()+6e4})}};function at(e){return async t=>{let n=await ot(e,t);if(!n)return{handled:!1,sessionId:null,clientAccountId:null,changed:!1};let{sessionId:r}=n,{observation:i,accountObserveRequest:a}=st(t),o=await e.requestOptional(E.account.observe,a);if(!o.handled)return{handled:!1,sessionId:r,clientAccountId:null,changed:!1};let{clientAccountId:s}=o.data;return{handled:!0,sessionId:r,clientAccountId:s,changed:await mt(e,r,i,s)}}}async function ot(t,n){switch(n.locator.kind){case`session`:{let{session:r}=await t.request(e.get,{sessionId:n.locator.sessionId});return r?{sessionId:r.sessionId,session:r}:null}case`adapter-session`:{let{session:r}=await t.request(e.getByAdapterSessionId,{adapterSessionId:n.locator.adapterSessionId});return r?{sessionId:r.sessionId,session:r}:null}case`both`:{let[{session:r},{session:i}]=await Promise.all([t.request(e.get,{sessionId:n.locator.sessionId}),t.request(e.getByAdapterSessionId,{adapterSessionId:n.locator.adapterSessionId})]);if(!r&&!i)return null;if(!r||!i)throw Error(`Session locator mismatch: sessionId "${n.locator.sessionId}" and adapterSessionId "${n.locator.adapterSessionId}" must both resolve the same session`);if(r.sessionId!==i.sessionId)throw Error(`Session locator mismatch: sessionId "${n.locator.sessionId}" and adapterSessionId "${n.locator.adapterSessionId}" resolve to different sessions`);return{sessionId:r.sessionId,session:r}}}}function st(e){let t={clientId:e.clientId,source:e.source,kind:e.kind,observedAt:e.observedAt,payload:ft(e.payload)};return{observation:t,accountObserveRequest:ct(t)}}function ct(e){let t=e.payload,n=lt(t),r=ut(t);if(r.length>0)return{clientId:e.clientId,observedAt:e.observedAt,displayLabel:dt(t,n),identifiers:r};throw Error(`client.session.account.observe for "${e.clientId}" requires canonical client account identifiers`)}function lt(e){return pt(e.accountInfo)??e}function ut(e){let t=e.identifiers;if(!Array.isArray(t))return[];try{return g.array(Ce).min(1).parse(t)}catch(e){throw Error(`client.session.account.observe received malformed canonical client account identifiers`,{cause:e})}}function dt(e,t){return K(e.displayLabel)??K(t.displayLabel)??K(t.email)??K(t.label)}function ft(e){return structuredClone(e)}function pt(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function K(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function mt(t,n,r,i){let a=await t.request(e.update,{sessionId:n,clientId:r.clientId,clientAccountId:i,lastClientIdentityObservation:r});if(!a.success)throw Error(`Failed to update session "${n}" with client account linkage`);return a.clientAccountChanged??!1}const ht=S(`session-storage`).name;var gt=class extends w{constructor(e=_){super(e)}onInit(){let e=at(this.bus);this.registerHandler(E.session.account.observe,async t=>{t.setResult(await e(we.request.parse(t.payload)))})}};const _t={name:`makaio.session-client-account-linking`,displayName:`Session Client Account Linking`,version:`0.1.0`,dependencies:[x(ht),x(`makaio.clients-core`)],critical:!1,create:e=>new gt(e.bus)},vt={name:`framework-shell`,displayName:`Shell`,version:`0.1.0`,surface:`interactive`,windows:[{id:`main`,style:`utility`,width:1e3,height:700,singleton:!0}]};async function yt(e){let{harnesses:t}=await e.request(m.list,{}),n=new Set(t.map(e=>e.id));for(let t of he){if(n.has(t.id))continue;let r={...t};await e.request(m.set,{harness:r})}}function q(e,t,n){return e??t??n}var bt=class extends w{static storage={drizzle:h};constructor(e=_){super(e)}async onInit(){await yt(this.bus),this.registerHandlers()}registerHandlers(){this.registerHandler(y.get,async e=>{let t=await this.loadHarness(e.payload);if(!t)throw Error(`Harness not found`);e.setResult(t)}),this.registerHandler(y.list,async e=>{let{harnesses:t}=await this.bus.request(m.list,e.payload);e.setResult({harnesses:t})}),this.registerHandler(y.set,async e=>{let t=await this.upsertHarness(e.payload);e.setResult({id:t})}),this.registerHandler(y.delete,async e=>{let{deleted:t}=await this.bus.request(m.delete,{id:e.payload.id});e.setResult({success:t})}),this.registerHandler(y.getDefault,async e=>{let t=await this.getDefaultHarness(e.payload.adapterName,e.payload.clientId);e.setResult(t)}),this.registerHandler(y.resolve,async e=>{let{adapterName:t,clientId:n,personaHarnessId:r,profileHarnessId:i}=e.payload;if(r){let i=await this.resolveAndValidateHarness(r,t,`persona`,n);e.setResult(i);return}if(i){let r=await this.resolveAndValidateHarness(i,t,`profile`,n);e.setResult(r);return}let a=await this.getDefaultHarness(t,n);e.setResult(a)}),this.registerHandler(y.getSchema,({setResult:e})=>{let{$schema:t,...n}=g.toJSONSchema(ge);e({schema:n,uiConfig:{editMode:`fullPage`,hiddenFields:[`isDefault`]}})})}async upsertHarness(e){let t=await this.resolveHarnessId(e.name,e.adapterName,e.clientId),n=await this.loadHarness({id:t,adapterName:e.adapterName,clientId:e.clientId}),r=this.mergeHarnessPayload(t,e,n);return r.adapterName&&await this.validateNativeTools(r.adapterName,r.nativeTools),await this.bus.request(m.set,{harness:r}),t}mergeHarnessPayload(e,t,n){let r={enabled:[],disabled:[]};return{id:e,name:t.name,description:q(t.description,n?.description,void 0),adapterName:t.adapterName,clientId:q(t.clientId,n?.clientId,void 0),env:q(t.env,n?.env,void 0),credentials:q(t.credentials,n?.credentials,void 0),cwd:q(t.cwd,n?.cwd,void 0),approvalPolicy:q(t.approvalPolicy,n?.approvalPolicy,`always-ask`),nativeTools:q(t.nativeTools,n?.nativeTools,r),registryTools:q(t.registryTools,n?.registryTools,r),skills:q(t.skills,n?.skills,void 0),toolCapabilityMap:t.toolCapabilityMap??n?.toolCapabilityMap,capabilityOverrides:t.capabilityOverrides??n?.capabilityOverrides,toolApprovalOverrides:t.toolApprovalOverrides??n?.toolApprovalOverrides,isDefault:q(t.isDefault,n?.isDefault,!1),enabled:q(t.enabled,n?.enabled,!0)}}async resolveHarnessId(e,t,n){let r=n??t,{harnesses:i}=await this.bus.request(m.list,{name:e}),a=i.find(t=>t.name===e&&(t.clientId??t.adapterName)===r);if(a)return a.id;let o=i.find(t=>t.name===e&&(t.clientId??t.adapterName)!==r);if(o){let t=o.clientId?`client '${o.clientId}'`:`adapter '${o.adapterName}'`;throw Error(`Harness "${e}" already exists with scope ${t}; cannot change scope to ${r??`(none)`}`)}return this.createStableHarnessId(e,r)}async loadHarness(e){if(e.id){let{harness:t}=await this.bus.request(m.get,{id:e.id});return t&&(!e.adapterName||t.adapterName===e.adapterName)&&(!e.clientId||t.clientId===e.clientId)?t:null}if(!e.name)return null;let{harnesses:t}=await this.bus.request(m.list,{name:e.name,adapterName:e.adapterName,clientId:e.clientId});return e.clientId?t.find(t=>t.clientId===e.clientId)??null:e.adapterName?t.find(t=>t.adapterName===e.adapterName)??null:t[0]??null}async getDefaultHarness(e,t){if(t){let{harnesses:e}=await this.bus.request(m.list,{clientId:t}),n=e.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=e.find(e=>e.enabled);if(r)return r}if(e){let{harnesses:t}=await this.bus.request(m.list,{adapterName:e}),n=t.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=t.find(e=>e.enabled);if(r)return r}let n=t?e?`client '${t}' or adapter '${e}'`:`client '${t}'`:`adapter '${e}'`;throw Error(`No harness available for ${n}`)}assertHarnessAdapterMatch(e,t,n,r){if(e.adapterName&&t&&e.adapterName!==t)throw Error(`Resolved ${n} harness adapter mismatch: expected "${t}", got "${e.adapterName}"`);if(e.clientId&&r&&e.clientId!==r)throw Error(`Resolved ${n} harness client mismatch: expected "${r}", got "${e.clientId}"`)}assertHarnessEnabled(e,t){if(!e.enabled)throw Error(`Resolved ${t} harness is disabled: ${e.id}`)}async validateNativeTools(e,t){let n=await this.bus.requestOptional(pe.getCapabilities,{adapterName:e});if(!n.handled)return;let r=new Set(n.data.nativeTools),i=[...t.enabled,...t.disabled].filter(e=>!r.has(e));if(i.length>0)throw Error(`Tool '${i[0]}' not found in adapter '${e}' native tools. Declared tools: ${[...r].join(`, `)}`)}createStableHarnessId(e,t){return`harness-${ue(`sha256`).update(`${t??``}\0${e}`).digest(`hex`).slice(0,24)}`}async resolveAndValidateHarness(e,t,n,r){let i=await this.loadHarness({id:e});if(!i)throw Error(`${n===`persona`?`Persona`:`Profile`} harness not found: ${e}`);return this.assertHarnessAdapterMatch(i,t,n,r),this.assertHarnessEnabled(i,n),i}};const xt={name:`makaio.harness`,displayName:`Harness`,version:`0.1.0`,critical:!0,storage:{registerHandlers:T(h)},create:e=>new bt(e.bus)},J=S(`session-storage`),Y=S(`session-bridge`),X=S(`session`),St=S(`session-orchestrator`),Z=S(`tool-registry`),Ct=S(`tool-approval`),wt=S(`tray-menu`),Tt=S(`capability`),Et=S(`model-registry`),Dt=S(`workflow-block-registry`),Ot=S(`transition-pipeline`),kt=S(`filesystem`),At=S(`git`),jt=S(`artifact-schema-registry`),Mt=S(`artifact-lifecycle-hook-registry`),Nt=S(`facet-namespace-registry`),Pt=S(`surface-binding-registry`),Ft={name:jt.name,displayName:`Artifact Schema Registry`,version:`0.1.0`,critical:!0,create:e=>new I(e.bus)},It={name:Mt.name,displayName:`Artifact Lifecycle Hook Registry`,version:`0.1.0`,critical:!0,create:e=>new B(e.bus)},Lt={name:Nt.name,displayName:`Facet Namespace Registry`,version:`0.1.0`,critical:!0,create:e=>new Be(e.bus)},Rt={name:Pt.name,displayName:`Surface Binding Registry`,version:`0.1.0`,critical:!0,create:e=>new Ve(e.bus)},zt={name:J.name,displayName:`Session Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:T((e,n)=>{let a=[],o=e=>{for(let t=a.length-1;t>=0;--t)try{a[t]?.()}catch(t){console.warn(`[sessionStoragePackage] cleanup failed during ${e}:`,t)}a.length=0};try{a.push(c(e,n)),a.push(i(e,n)),a.push(r(e,n)),a.push(ne(e,n)),a.push(t(e,n)),a.push(te(e,n)),a.push(l(e,n)),a.push(f(e,n)),a.push(s(e,n)),a.push(u(e)),a.push(ee(e)),a.push(d(e))}catch(e){throw o(`rollback`),e}return()=>{o(`shutdown`)}})}},Bt={name:Y.name,displayName:`Session Bridge`,version:`0.1.0`,dependencies:[x(J.name)],critical:!0,create:e=>new n(e.bus)},Vt={name:X.name,displayName:`Session`,version:`0.1.0`,dependencies:[x(Y.name)],critical:!0,create:e=>new o(e.bus)},Q={name:St.name,displayName:`Session Orchestrator`,version:`0.1.0`,dependencies:[x(X.name),x(W.name)],critical:!0,runtimeOwnership:{sessionOrchestrator:!0},create:e=>new a(e.bus,e.machineId)},Ht={name:Z.name,displayName:`Tool Registry`,version:`0.1.0`,critical:!0,create:e=>new Je({bus:e.bus})},Ut={name:Ct.name,displayName:`Tool Approval`,version:`0.1.0`,dependencies:[x(Z.name)],critical:!0,create:e=>new oe(e.bus)},Wt={name:wt.name,displayName:`Tray Menu`,version:`0.1.0`,critical:!0,create:e=>new se(e.bus)},Gt={name:Tt.name,displayName:`Capability`,version:`0.1.0`,critical:!0,create:e=>new re(e.bus)},Kt={name:Dt.name,displayName:`Workflow Block Registry`,version:`0.1.0`,critical:!0,create:e=>new Ye(e.bus)},$={name:Ot.name,displayName:`Transition Pipeline`,version:`0.1.0`,critical:!0,create:e=>new it(e.bus)},qt={name:kt.name,displayName:`Filesystem`,version:`0.1.0`,critical:!0,create:e=>new le(e.bus,e.machineId)},Jt={name:At.name,displayName:`Git`,version:`0.1.0`,dependencies:[x(kt.name)],critical:!0,create:e=>new Ne(e.bus)};function Yt(e){return{name:Et.name,displayName:`Model Registry`,version:`0.1.0`,critical:!0,create:t=>new ie({bus:t.bus,fetcher:e})}}const Xt=[Ft,It,Lt,Rt,zt,Bt,_t,Vt,Q,ce,Ht,Ut,Wt,Gt,xt,W,vt,Kt,$,Jt,qt];function Zt(){let e=new Map;return{filter:e=>!!e.tools?.createToolsets,async processActivated(t,n,r){let i=r.getService(Z);if(!i)throw Error(`ToolRegistry is not available. Ensure toolRegistryPackage is included in the composition root.`);let a=n.tools.createToolsets(r),o=[];try{for(let e of a)await i.register(e),o.push(()=>i.deregister(e.metadata.name))}catch(e){for(let e=o.length-1;e>=0;--e)try{await o[e]()}catch(e){console.error(`[ToolContributionProcessor] Rollback error for "${t}":`,e)}throw e}e.set(t,o)},async processStopped(t){let n=e.get(t);if(n){for(let e=n.length-1;e>=0;--e)try{await n[e]()}catch(e){console.error(`[ToolContributionProcessor] Deregister error for "${t}":`,e)}e.delete(t)}}}}export{Ut as A,Je as B,Lt as C,Vt as D,Q as E,it as F,Ve as G,Ue as H,rt as I,L as J,Be as K,nt as L,$ as M,Wt as N,zt as O,Kt as P,G as R,Yt as S,Bt as T,He as U,W as V,U as W,I as Y,wt as _,jt as a,Ft as b,Et as c,J as d,X as f,Ot as g,Z as h,Mt as i,Ht as j,Rt as k,Y as l,Ct as m,Oe as n,Tt as o,Pt as p,B as q,Zt as r,Nt as s,Ee as t,St as u,Dt as v,Xt as w,Gt as x,It as y,Ye as z};
1
+ import{SessionStorageSubjects as e}from"./services/session/storage/namespace.mjs";import{x as t}from"./handlers-BAycjV02.mjs";import{A as n,G as r,K as i,L as a,Y as o,a as s,b as c,c as l,i as u,n as d,p as f,r as ee,w as te,z as ne}from"./session-0nWT4st6.mjs";import{n as p}from"./namespace-DBHwyhME.mjs";import{t as re}from"./capability-service-XlymTzz1.mjs";import"./services/adapter-subsystem/index.mjs";import{i as ie,s as ae}from"./model-registry-rYICIwyR.mjs";import{t as oe}from"./tool-approval-service-DEQiipxj.mjs";import{t as se}from"./tray-menu-service-B2AxiQqL.mjs";import{r as m,t as h}from"./handler-2bPhRn0u.mjs";import{n as ce}from"./package-CF_Zm2v4.mjs";import{t as le}from"./filesystem-service-Bmyqo6po.mjs";import{z as g}from"zod";import{createHash as ue}from"node:crypto";import{MakaioError as de,createMakaioContext as fe}from"@makaio/framework/core";import{MakaioBus as _}from"@makaio/framework/bus";import{AdapterSubjects as pe,ArtifactSubjects as v,CanonicalModelSubjects as me,DEFAULT_HARNESSES as he,HarnessDefinitionCreateSchema as ge,HarnessSubjects as y,JsonValueSchema as _e,ToolSubjects as b,TransitionRuleDefinitionSchema as ve,WorkflowBlocksSubjects as ye,WorkflowSubjects as be,dep as x,extensionToken as S,validateToolAdapterIdentity as xe,zodSchemaToJsonRecord as C}from"@makaio/framework/contracts";import{BaseService as w}from"@makaio/framework/service-base";import{registerDrizzleHandlers as T}from"@makaio/framework/storage/drizzle";import{slugifyProviderConfigName as Se}from"@makaio/framework/contracts/config";import{ClientAccountIdentifierSchema as Ce,ClientSessionAccountObserveSchema as we,ClientSubjects as E}from"@makaio/framework/contracts/client";import{FacetSubjects as D}from"@makaio/framework/contracts/facet";import{MaterializationSubjects as O}from"@makaio/framework/contracts/materialization";import{FILE_ACCESS_RULES_KEY as Te,FILE_ACCESS_RULES_KEY as Ee,ToolErrorCodes as k,errorToToolResult as De,extractToolFilePath as Oe,toolError as A,toolSuccess as ke}from"@makaio/framework/tools";import{ConditionSchema as Ae,evaluate as je}from"@makaio/framework/rules";import{evaluateSync as Me}from"@makaio/framework/expression";import{GitService as Ne}from"@makaio/framework/git";const Pe=[{type:`supersedes`,symmetry:`asymmetric`},{type:`contradicts`,symmetry:`symmetric`},{type:`derives_from`,symmetry:`asymmetric`},{type:`responds_to`,symmetry:`asymmetric`},{type:`contains`,symmetry:`asymmetric`},{type:`refines`,symmetry:`asymmetric`},{type:`scopes`,symmetry:`asymmetric`},{type:`references`,symmetry:`asymmetric`},{type:`evidenced_by`,symmetry:`asymmetric`}],j={extension:0,"factory-repo":1,"target-repo":2},M={source:`extension`,ownerKey:`extension:bus`};function N(e){return`${e.source}:${e.ownerKey}`}function Fe(e,t){return e.source===t.source&&e.ownerKey===t.ownerKey}function P(e){return structuredClone(e)}function F(e,t){return`${e}@${t}`}var I=class extends w{kinds=new Map;kindContributions=new Map;nextKindContributionOrder=0;relationTypes=new Map;constructor(e){super(e)}async onInit(){for(let e of Pe)this.relationTypes.set(e.type,e);this.registerHandler(v.kind.register,e=>{this.registerKind(e.payload),e.setResult({registered:!0})}),this.registerHandler(v.kind.list,e=>{let{kind:t}=e.payload,n=[...this.kinds.values()].filter(e=>!t||e.kind===t).map(P);e.setResult({kinds:n})}),this.registerHandler(v[`relation-type`].register,e=>{this.storeRelationType(e.payload),e.setResult({registered:!0})}),this.registerHandler(v[`relation-type`].list,e=>{let{type:t}=e.payload,n=[...this.relationTypes.values()].filter(e=>!t||e.type===t).map(P);e.setResult({relationTypes:n})})}compareKindContributions(e,t){let n=j[e.owner.source]-j[t.owner.source];return n===0?e.owner.source===`extension`?t.order-e.order:e.order-t.order:n}findSameTierRepoConflict(e,t,n){return[...e.values()].find(e=>!Fe(e.owner,t)&&e.owner.source===t.source&&t.source!==`extension`&&e.order<=n)}recomputeKindWinner(e){let t=this.kindContributions.get(e),n=this.kinds.get(e);if(t===void 0||t.size===0){this.kindContributions.delete(e),this.kinds.delete(e),this.emitKindChangedFromKey(e,n);return}let r;for(let e of t.values())(r===void 0||this.compareKindContributions(e,r)<0)&&(r=e);let i=r;this.kinds.set(e,P(i.registration)),JSON.stringify(n)!==JSON.stringify(i.registration)&&this.bus.emit(v.kind.changed,{kind:i.registration.kind,schemaVersion:i.registration.schemaVersion})}emitKindChangedFromKey(e,t){t!==void 0&&this.bus.emit(v.kind.changed,{kind:t.kind,schemaVersion:t.schemaVersion})}registerKind(e,t=M){let n=F(e.kind,e.schemaVersion),r=this.kindContributions.get(n)??new Map,i=N(t),a=r.get(i),o=t.source===`extension`?this.nextKindContributionOrder:a?.order??this.nextKindContributionOrder,s=this.findSameTierRepoConflict(r,t,o);if(s!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${n}' is already registered by '${s.owner.ownerKey}' at the same priority; keeping the existing owner.`);return}r.set(i,{owner:t,registration:P(e),order:t.source===`extension`||a===void 0?this.nextKindContributionOrder++:a.order}),this.kindContributions.set(n,r),this.recomputeKindWinner(n)}deregisterKind(e,t,n=M){let r=F(e,t),i=this.kindContributions.get(r);i!==void 0&&(i.delete(N(n)),this.recomputeKindWinner(r))}replaceKindRegistrationsForOwner(e,t){let n=new Set,r=N(e),i=new Map;for(let[e,t]of this.kindContributions.entries()){let a=t.get(r);a!==void 0&&(i.set(e,a.order),t.delete(r),n.add(e))}for(let a of t){let t=F(a.kind,a.schemaVersion),o=this.kindContributions.get(t)??new Map,s=e.source===`extension`?void 0:i.get(t),c=s??this.nextKindContributionOrder,l=this.findSameTierRepoConflict(o,e,c);if(l!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${t}' is already registered by '${l.owner.ownerKey}' at the same priority; keeping the existing owner.`);continue}o.set(r,{owner:e,registration:P(a),order:s??this.nextKindContributionOrder++}),this.kindContributions.set(t,o),n.add(t)}for(let e of n)this.recomputeKindWinner(e)}storeRelationType(e){let t=this.relationTypes.get(e.type);if(t){if(t.symmetry!==e.symmetry)throw Error(`Relation type '${e.type}' is already registered with different symmetry (existing: '${t.symmetry}', new: '${e.symmetry}')`);return}this.relationTypes.set(e.type,P(e))}getKind(e,t){let n=this.kinds.get(F(e,t));return n?P(n):void 0}getRelationType(e){let t=this.relationTypes.get(e);return t?P(t):void 0}onDestroy(){this.kinds.clear(),this.kindContributions.clear(),this.relationTypes.clear(),this.nextKindContributionOrder=0}},L=class extends Error{reason;hookId;constructor(e,t){super(`Artifact write rejected by hook '${t}': ${e}`),this.reason=e,this.hookId=t,this.name=`ArtifactLifecycleHookRejectedError`}};function R(e,t){return e?!(e.kind!==void 0&&e.kind!==`*`&&e.kind!==t.kind||e.schemaVersion!==void 0&&e.schemaVersion!==t.schemaVersion):!0}function z(e){return e.priority??0}function Ie(e,t,n){return e.filter(e=>e.event===t&&R(e.filter,n)).sort((e,t)=>z(t)-z(e))}function Le(e,t,n){return e.filter(e=>e.event===t&&R(e.filter,n)).sort((e,t)=>z(t)-z(e))}function Re(e,t){return{...e,...`data`in t?{data:t.data}:{},...`relations`in t?{relations:t.relations}:{},...`confidence`in t?{confidence:t.confidence}:{},...`representations`in t?{representations:t.representations}:{},...`actor`in t?{actor:t.actor}:{}}}function ze(e,t){let{confidence:n,representations:r,...i}=e;return{...i,data:t.data,relations:[...t.relations],...t.confidence===void 0?{}:{confidence:t.confidence},...t.representations===void 0?{}:{representations:t.representations},actor:t.actor}}var B=class extends w{registrations=new Map;constructor(e){super(e)}async onInit(){}onDestroy(){this.registrations.clear()}registerHooks(e,t){let n=[...t];this.registrations.set(e,n);let r=!1;return()=>{r||(r=!0,this.registrations.get(e)===n&&this.registrations.delete(e))}}allHooks(){let e=[];for(let t of this.registrations.values())e.push(...t);return e}async runBeforeCreate(e){return this.runBeforeHooks(`beforeCreate`,e)}async runBeforeRevise(e){return this.runBeforeHooks(`beforeRevise`,e)}async runBeforeHooks(e,t){let{draft:n,previous:r,kindRegistration:i}=t,a=Ie(this.allHooks(),e,n),o=new Map,s={kind:n.kind,schemaVersion:n.schemaVersion,scope:n.scope,data:n.data,relations:n.relations,...n.confidence===void 0?{}:{confidence:n.confidence},...n.representations===void 0?{}:{representations:n.representations},actor:n.actor},c=!1;for(let t of a){let n,a={event:e,get draft(){return s},previous:r,kindRegistration:i,bus:this.bus,meta:o,rejectCreation(e){n={reason:e}},skipMaterialization(){c=!0},updateDraft(e){s=Re(s,e)}};if(await t.handler(a),n)throw new L(n.reason,t.id)}return{draft:ze(n,s),skipMaterialization:c,meta:o}}async runAfterCreate(e){await this.runAfterHooks(`afterCreate`,`created`,e)}async runAfterRevise(e){await this.runAfterHooks(`afterRevise`,`revised`,e)}async runAfterStatusChanged(e){await this.runAfterHooks(`afterStatusChanged`,`status-changed`,e)}async runAfterObservationAdded(e){await this.runAfterHooks(`afterObservationAdded`,`observation-added`,e)}async runAfterHooks(e,t,n){let{artifact:r,previous:i,observation:a,kindRegistration:o,projectionPolicy:s,skipDefaultProjection:c,meta:l}=n,u=Le(this.allHooks(),e,r),d=this.bus,f=!1;for(let n of u){if(c&&(n.priority??0)<0||f&&(n.priority??0)<0)continue;let u={event:e,semanticEvent:t,artifact:r,previous:i?{refClass:`artifact`,id:i.id,revision:i.revision,kind:i.kind}:void 0,observation:a,kindRegistration:o,projectionPolicy:s,bus:d,meta:l,preventDefault(){f=!0},async resolveRelations(e){let t=r.relations.filter(t=>t.type===e).map(e=>e.target),n=[];for(let e of t){let t=e;if(t.refClass===`artifact`){let e=t,{artifact:r}=await d.request(v.resolve,{ref:e});r&&n.push(r)}}return n}};try{await n.handler(u)}catch(t){console.error(`[ArtifactLifecycleHookRegistry] Hook '${n.id}' threw during '${e}':`,t)}}}};function V(e){return structuredClone(e)}var Be=class extends w{namespaces=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(D.namespace.register,e=>{this.registerNamespace(e.payload),e.setResult({registered:!0})}),this.registerHandler(D.namespace.list,e=>{let{namespace:t}=e.payload,n=[...this.namespaces.values()].filter(e=>!t||e.namespace===t).map(V);e.setResult({namespaces:n})})}registerNamespace(e){let t=this.namespaces.get(e.namespace);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Facet namespace '${e.namespace}' is already registered with a different definition`);return}this.namespaces.set(e.namespace,V(e)),this.bus.emit(D.namespace.changed,{namespace:e.namespace})}deregisterNamespace(e){this.namespaces.delete(e)&&this.bus.emit(D.namespace.changed,{namespace:e})}getNamespace(e){let t=this.namespaces.get(e);return t?V(t):void 0}onDestroy(){this.namespaces.clear()}};function H(e){return structuredClone(e)}var Ve=class extends w{bindings=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(O.surfaceBinding.register,e=>{this.registerBinding(e.payload),e.setResult({registered:!0})}),this.registerHandler(O.surfaceBinding.list,e=>{let{provider:t,namespace:n}=e.payload,r=[...this.bindings.values()].filter(e=>(!t||e.provider===t)&&(!n||e.namespace===n)).map(H);e.setResult({bindings:r})})}registerBinding(e){let t=this.bindings.get(e.id);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Surface binding '${e.id}' is already registered with a different definition`);return}this.bindings.set(e.id,H(e)),this.bus.emit(O.surfaceBinding.changed,{id:e.id,provider:e.provider})}deregisterBinding(e){let t=this.bindings.get(e);t&&(this.bindings.delete(e),this.bus.emit(O.surfaceBinding.changed,{id:e,provider:t.provider}))}getBinding(e){let t=this.bindings.get(e);return t?H(t):void 0}onDestroy(){this.bindings.clear()}},U=class extends de{code;suggestions;constructor(e,t,n){super(e),this.code=t,this.suggestions=n}},He=class{deps;constructor(e){this.deps=e}async resolve(e,t){switch(e.kind){case`bare`:return this.resolveBare(e.model);case`qualified`:return this.resolveQualified(e.segment1,e.segment2,e.model)}}async resolveBare(e){let t=await this.deps.resolveDefaultModelTarget(e);switch(t.kind){case`resolved`:return{kind:`adapter`,adapterName:t.target.adapterName,providerConfigId:t.target.providerConfigId,model:t.target.model};case`ambiguous`:throw new U(`Model "${e}" is available via multiple providers. Use a qualified reference to select one.`,`ambiguous-model`,t.matches.map(e=>e.qualifiedName));case`not-found`:throw new U(`Model "${e}" was not found in any enabled adapter's registry.`,`model-not-found`)}}async resolveQualified(e,t,n){return t===void 0?this.resolveQualifiedOneSegment(e,n):this.resolveQualifiedTwoSegments(e,t,n)}async resolveQualifiedTwoSegments(e,t,n){let r=await this.deps.listEnabledAdapterNames();if(!r.includes(e))throw new U(`Adapter "${e}" is not enabled or does not exist.`,`adapter-not-found`);return{kind:`adapter`,adapterName:e,providerConfigId:await this.resolveProviderSegment(t,e,r),model:n}}async resolveQualifiedOneSegment(e,t){let n=await this.deps.listEnabledAdapterNames();if(n.includes(e)){let n=await this.deps.getDefaultBinding(e);if(!n)throw new U(`Adapter "${e}" has no enabled provider binding. Configure or enable a provider binding first.`,`no-binding`);return{kind:`adapter`,adapterName:e,providerConfigId:n.providerConfigId,model:t}}let r=await this.deps.findProviderConfigByName(e);if(r)return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t};let i=await this.deps.findProviderDefinition(e,n);if(i){let r=await this.deps.findDefaultConfigForDefinition(i.id);if(!r)throw new U(`Provider definition "${e}" exists but has no configured provider config. Create a provider config first.`,`provider-not-found`);return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t}}throw new U(`"${e}" does not match any enabled adapter name, provider config name, or provider definition ID.`,`adapter-not-found`)}async resolveProviderSegment(e,t,n){let r=await this.deps.findProviderConfigByName(e);if(r)return await this.requireBindingForAdapterAndConfig(t,r.id,e),r.id;let i=await this.deps.findProviderDefinition(e,n);if(i){let n=await this.deps.findConfigForDefinitionAndAdapter(i.id,t);if(!n)throw new U(`Provider definition "${e}" has no enabled config bound to adapter "${t}". Create a provider config and binding first.`,`no-binding`);return n.id}throw new U(`"${e}" does not match any provider config name or provider definition ID.`,`provider-not-found`)}async requireBindingForAdapterAndConfig(e,t,n){if(!(await this.deps.listBindingsForConfig(t)).some(t=>t.adapterName===e))throw new U(`No binding exists between adapter "${e}" and provider "${n}". Create a binding first.`,`no-binding`)}async pickBindingForConfig(e,t){let n=(await this.deps.listBindingsForConfig(e)).filter(e=>t.includes(e.adapterName));if(n.length===0)throw new U(`Provider config "${e}" has no bindings to enabled adapters. Bind it to an enabled adapter first.`,`no-binding`);return n.find(e=>e.isDefault)??n[0]}},Ue=class e extends w{constructor(e=_){super(e)}async onInit(){await this.bus.request(p.ensureReady,{});let e=new He(this.createDeps());this.registerHandler(me.resolve,async t=>{let n=await e.resolve(t.payload.parsed,t.payload.context);t.setResult(n)})}createDeps(){let e=this.bus,t=async()=>{let{adapters:t}=await e.request(p.listAdapters,{});return t.filter(e=>e.enabled).map(e=>e.name)},n=async t=>{let[n,r]=await Promise.all([e.request(p.getDefaultBinding,{adapterName:t}),this.listEnabledProviderConfigIds()]);if(n.binding&&r.has(n.binding.providerConfigId))return n.binding;let{bindings:i}=await e.request(p.listBindings,{adapterName:t}),a=i.filter(e=>r.has(e.providerConfigId));return a.find(e=>e.isDefault)??a[0]},r=async t=>{let{definitions:n}=await e.request(p.getProviderDefinitionsByAdapter,{adapterName:t});return n},i=async t=>{let{bindings:n}=await e.request(p.listBindingsByConfig,{providerConfigId:t});return n},a=async t=>{let{configs:n}=await e.request(p.listProviderConfigs,{enabled:!0}),r=Se(t);return n.find(e=>Se(e.name)===r)},o=this.buildFindProviderDefinition(t,r),s=async t=>{let{configs:n}=await e.request(p.listProviderConfigsByDefinition,{definitionId:t}),r=n.filter(e=>e.enabled);return r.find(e=>e.isDefault)??r[0]},c=async(t,n)=>{let{config:r}=await e.request(p.findConfigForDefinitionAndAdapter,{definitionId:t,adapterName:n});return r?{id:r.id}:void 0};return{listEnabledAdapterNames:t,getDefaultBinding:n,findProviderConfigByName:a,findProviderDefinition:o,listBindingsForConfig:i,findDefaultConfigForDefinition:s,findConfigForDefinitionAndAdapter:c,resolveDefaultModelTarget:this.buildResolveDefaultModelTarget(t,r,c)}}buildFindProviderDefinition(e,t){return async(n,r)=>{let i=r??await e();for(let e of i){let r=(await t(e)).find(e=>e.id===n);if(r)return r}}}buildResolveDefaultModelTarget(t,n,r){let i=this.bus;return async a=>{let o=await t(),s=await Promise.all(o.map(async e=>({adapterName:e,definitions:await n(e)}))),c=Array.from(new Set(s.flatMap(({definitions:e})=>e.map(e=>e.id))));if(c.length===0)return{kind:`not-found`};let{matches:l}=await i.request(ae.checkModelInProviders,{providerIds:c,model:a}),u=(await Promise.all(s.map(({adapterName:e,definitions:t})=>this.collectAdapterCandidates(e,t,a,l,r)))).flat();return e.buildResolution(u)}}async collectAdapterCandidates(e,t,n,r,i){let a=t.filter(e=>e.id in r),o=await Promise.all(a.map(t=>i(t.id,e)));return a.flatMap((t,r)=>{let i=o[r];return i?[{adapterName:e,definitionId:t.id,providerConfigId:i.id,qualifiedName:`${e}/${t.id}::${n}`,model:n}]:[]})}static buildResolution(e){let t=Array.from(new Map(e.map(e=>[this.routeKey(e),e])).values());if(t.length===0)return{kind:`not-found`};if(t.length>1)return{kind:`ambiguous`,matches:t.map(({adapterName:e,definitionId:t,qualifiedName:n})=>({adapterName:e,definitionId:t,qualifiedName:n}))};let[n]=t;return{kind:`resolved`,target:{adapterName:n.adapterName,providerConfigId:n.providerConfigId,definitionId:n.definitionId,model:n.model}}}static routeKey(e){return`${e.adapterName}\0${e.definitionId}\0${e.providerConfigId}`}async listEnabledProviderConfigIds(){let{configs:e}=await this.bus.request(p.listProviderConfigs,{enabled:!0});return new Set(e.map(e=>e.id))}};const W={name:`makaio.canonical-model`,displayName:`Canonical Model`,version:`0.1.0`,critical:!1,create:e=>new Ue(e.bus)};function We(e){let t=xe({adapterId:e?.adapterId,adapterName:e?.adapterName,contextOverrides:{adapterId:e?.contextOverrides?.adapterId,adapterName:e?.contextOverrides?.adapterName}}),n=t.issues[0];return n?A(k.VALIDATION_FAILED,n.message):ke(t.effectiveIdentity)}function Ge(e){let t=e?.allowedDirectories;if(Array.isArray(t))return t.filter(e=>typeof e==`string`)}async function Ke(e,t,n,r){let i=new Map;for(let e of t)i.set(e.name,await r(e.name));let a=t.filter(e=>{let t=i.get(e.name);return!t?.allowedAdapters||t.allowedAdapters.length===0?!0:t.allowedAdapters.includes(n)}),o=new Set(a.map(e=>e.name));return{filteredTools:e.filter(e=>!(!o.has(e.toolsetName)||i.get(e.toolsetName)?.disabledTools?.includes(e.name))),filteredToolsets:a}}function qe(){return`exec_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}var Je=class{bus;toolsets=new Map;tools=new Map;cleanupHandlers=[];handlerPriority;policyProvider;fileAccessRuleProvider;revision=0;constructor(e){this.bus=e?.bus??_,this.handlerPriority=e?.handlerPriority??0,this.policyProvider=e?.policyProvider,this.fileAccessRuleProvider=e?.fileAccessRuleProvider,this.registerHandlers()}registerHandlers(){let e=this.bus.on(b.list,async e=>{let{toolsetName:t,adapterId:n,adapterName:r}=e.payload,{tools:i,toolsets:a}=await this.listToolsWithToolsets({toolsetName:t,adapterId:n,adapterName:r});e.setResult({tools:i,toolsets:a})},{priority:this.handlerPriority});this.cleanupHandlers.push(e);let t=this.bus.on(b.execute,async e=>{let{toolName:t,input:n,adapterId:r,adapterName:i,contextOverrides:a}=e.payload,o=await this.execute(t,n,{contextOverrides:a,adapterId:r,adapterName:i});e.setResult(o)},{priority:this.handlerPriority});this.cleanupHandlers.push(t)}async register(e){if(this.toolsets.has(e.metadata.name))throw Error(`Toolset '${e.metadata.name}' is already registered`);let t=[],n=[];for(let[,r]of Object.entries(e.tools)){let i=r.metadata.name;if(this.tools.has(i))throw Error(`Tool '${i}' is already registered (from toolset '${this.tools.get(i).toolsetName}')`);n.push({tool:r,toolsetName:e.metadata.name}),t.push(i)}this.toolsets.set(e.metadata.name,e);for(let e=0;e<n.length;e+=1)this.tools.set(t[e],n[e]);await this.emitRegistryChanged(`toolset-registered`,e.metadata.name).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registryChanged.subject} for '${e.metadata.name}':`,t)),await this.bus.emit(b.registered,{toolsetName:e.metadata.name,toolsetVersion:e.metadata.version,toolNames:t}).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registered.subject} for '${e.metadata.name}':`,t))}async deregister(e){let t=this.toolsets.get(e);if(!t)throw Error(`Toolset '${e}' is not registered`);for(let e of Object.values(t.tools))this.tools.delete(e.metadata.name);this.toolsets.delete(e),await this.emitRegistryChanged(`toolset-unregistered`,e).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registryChanged.subject} for '${e}':`,t))}async emitRegistryChanged(e,t){this.revision+=1,await this.bus.emit(b.registryChanged,{revision:this.revision,reason:e,toolsetName:t})}async execute(e,t,n){let r=this.tools.get(e);if(!r)return A(k.TOOL_NOT_FOUND,`Tool '${e}' not found`);let i=We(n);if(!i.success)return i;let{tool:a,toolsetName:o}=r,s=await this.checkPolicy(o,e,i.data.adapterId,i.data.adapterName);if(s)return s;let c=qe(),l=Date.now();await this.bus.emit(b.started,{toolName:e,toolsetName:o,executionId:c,timestamp:l});try{let r=a.inputSchema.safeParse(t);if(!r.success){let t=A(k.VALIDATION_FAILED,`Input validation failed`,{issues:r.error.issues});return await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:t.error}),t}let s=await this.buildExecutionContext(n,i.data),u=await a.execute(r.data,s);return u.success?await this.bus.emit(b.completed,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),durationMs:Date.now()-l}):await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:u.error}),u}catch(t){let n=De(t);return await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:n.error}),n}}async buildExecutionContext(e,t){let n=e?.contextOverrides?.constraints;if(this.fileAccessRuleProvider){let t=e?.contextOverrides?.cwd??process.cwd(),r=Ge(n),i=await this.fileAccessRuleProvider(t,r);n={...n,[Te]:i}}let r=fe({...e?.contextOverrides,constraints:n}),i=e?.contextOverrides;return{...r,bus:this.bus,sessionId:i?.sessionId,agentId:i?.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:i?.adapterSessionId,turnId:i?.turnId,turnContext:i?.turnContext,toolCallId:i?.toolCallId}}async checkPolicy(e,t,n,r){if(!this.policyProvider)return null;let i=await this.policyProvider(e);if(!i)return null;if(i.disabledTools?.includes(t))return A(k.PERMISSION_DENIED,`Tool '${t}' is disabled`,{toolsetName:e,toolName:t});if(i.allowedAdapters&&i.allowedAdapters.length>0){let t=r??n;if(!t||!i.allowedAdapters.includes(t))return A(k.PERMISSION_DENIED,`Adapter not allowed for toolset '${e}'`,{toolsetName:e,adapterId:n,adapterName:r,allowedAdapters:i.allowedAdapters})}return null}listTools(e){let t=[];for(let[,n]of this.tools){if(e?.toolsetName&&n.toolsetName!==e.toolsetName)continue;let{$schema:r,...i}=g.toJSONSchema(n.tool.inputSchema);t.push({name:n.tool.metadata.name,description:n.tool.metadata.description,toolsetName:n.toolsetName,annotations:n.tool.metadata.annotations,inputSchema:i})}return t}listToolsets(){let e=[];for(let[,t]of this.toolsets){let n={name:t.metadata.name,description:t.metadata.description,version:t.metadata.version,toolCount:Object.keys(t.tools).length};if(t.configSchema){let{$schema:e,...r}=g.toJSONSchema(t.configSchema);n.configSchema=r}e.push(n)}return e}async listToolsWithToolsets(e){let t=this.listTools(e),n=this.listToolsets(),r=e?.toolsetName?n.filter(t=>t.name===e.toolsetName):n,i=e?.adapterName??e?.adapterId;if(this.policyProvider&&i){let{filteredTools:e,filteredToolsets:n}=await Ke(t,r,i,this.policyProvider);return{tools:e,toolsets:n}}return{tools:t,toolsets:r}}getTool(e){return this.tools.get(e)?.tool}getToolset(e){return this.toolsets.get(e)}dispose(){for(let e of this.cleanupHandlers)e();this.cleanupHandlers.length=0}destroy(){this.dispose()}},Ye=class extends w{triggersByExtension=new Map;stepsByExtension=new Map;revision=0;cache=null;constructor(e){super(e)}onInit(){this.registerHandler(ye.list,e=>{e.setResult({triggers:this.listTriggers(),steps:this.listSteps()})})}async register(e,t){let n=[],r=[],i=this.snapshotExtensionState(e),a=new Set;for(let e of this.triggersByExtension.values())for(let t of e)a.add(t.metadata.name);for(let e of this.stepsByExtension.values())for(let t of e)a.add(t.metadata.name);if(t.triggers)for(let r of t.triggers)this.assertExtensionNamespace(e,r.metadata),this.assertNoCollision(r.metadata,a),a.add(r.metadata.name),n.push({metadata:{...r.metadata,extensionName:e},configSchema:C(r.configSchema),outputSchema:C(r.outputSchema)});if(t.steps)for(let n of t.steps)this.assertExtensionNamespace(e,n.metadata),this.assertNoCollision(n.metadata,a),a.add(n.metadata.name),r.push({metadata:{...n.metadata,extensionName:e},configSchema:C(n.configSchema),inputSchema:C(n.inputSchema),outputSchema:C(n.outputSchema),runs:structuredClone(n.runs)});if(n.length>0&&this.triggersByExtension.set(e,n),r.length>0&&this.stepsByExtension.set(e,r),n.length>0||r.length>0){this.revision+=1;try{await this.emitChanged(e,`registered`)}catch(t){throw this.restoreExtensionState(e,i),t}}}async deregister(e){let t=this.snapshotExtensionState(e),n=this.triggersByExtension.delete(e),r=this.stepsByExtension.delete(e);if(n||r){this.revision+=1;try{await this.emitChanged(e,`deregistered`)}catch(n){throw this.restoreExtensionState(e,t),n}}}listTriggers(){return this.getCache().triggers.map(Xe)}listSteps(){return this.getCache().steps.map(Ze)}async emitChanged(e,t){await this.bus.emit(ye.changed,{extensionName:e,revision:this.revision,reason:t})}getCache(){return(!this.cache||this.cache.revision!==this.revision)&&(this.cache={revision:this.revision,triggers:[...this.triggersByExtension.values()].flat(),steps:[...this.stepsByExtension.values()].flat()}),this.cache}snapshotExtensionState(e){return{triggers:this.triggersByExtension.get(e),steps:this.stepsByExtension.get(e),revision:this.revision,cache:this.cache}}restoreExtensionState(e,t){t.triggers?this.triggersByExtension.set(e,t.triggers):this.triggersByExtension.delete(e),t.steps?this.stepsByExtension.set(e,t.steps):this.stepsByExtension.delete(e),this.revision=t.revision,this.cache=t.cache}assertNoCollision(e,t){if(t.has(e.name))throw Error(`Workflow block name collision: '${e.name}' is already registered`)}assertExtensionNamespace(e,t){let n=`${e}.`;if(!t.name.startsWith(n))throw Error(`Workflow block '${t.name}' must be namespaced by extension '${n}'`)}};function Xe(e){return{metadata:Qe(e.metadata),configSchema:structuredClone(e.configSchema),outputSchema:structuredClone(e.outputSchema)}}function Ze(e){return{metadata:Qe(e.metadata),configSchema:structuredClone(e.configSchema),inputSchema:structuredClone(e.inputSchema),outputSchema:structuredClone(e.outputSchema),runs:structuredClone(e.runs)}}function Qe(e){return e.categories?{...e,categories:[...e.categories]}:{...e}}const G=`workflow.start`;function $e(e){return()=>({async execute(t,n){let{input:r={},executionHints:i}=t,{workflowId:a}=r;if(typeof a!=`string`||a.length===0)throw Error(`[TransitionActionRegistry] 'workflow.start' action requires a non-empty 'input.workflowId' string`);await e.request(be.start,{workflowId:a,input:et(r,n),config:r.config,artifactRef:r.artifactRef,scope:r.scope,triggerPayload:{_transitionRuleId:n._transition.ruleId,_transitionDepth:n._transition.depth,_transitionEventType:n._transition.eventType},executionHints:i})}})}function et(e,t){let n=e.inputExpression;if(typeof n!=`string`)return e.input;let r=Me(n,tt(t)),i=_e.safeParse(r);if(!i.success)throw Error(`[TransitionActionRegistry] 'workflow.start' inputExpression for rule '${t._transition.ruleId}' must resolve to a JSON value`);return i.data}function tt(e){let t={...e};return{...t,ctx:t}}var nt=class{factories=new Map;factoriesBySource=new Map;constructor(e){this.factories.set(G,$e(e)),this.factoriesBySource.set(`__builtin__`,[G])}register(e,t){let n=Object.keys(t);if(n.length!==0){if(this.factoriesBySource.has(e))throw Error(`TransitionActionRegistry: duplicate source '${e}'`);for(let t of n)if(this.factories.has(t))throw Error(`TransitionActionRegistry: duplicate action type '${t}' from source '${e}'`);for(let e of n)this.factories.set(e,t[e]);this.factoriesBySource.set(e,n)}}deregister(e){if(e===`__builtin__`)return;let t=this.factoriesBySource.get(e);if(t){for(let e of t)this.factories.delete(e);this.factoriesBySource.delete(e)}}async dispatch(e,t){let n=this.factories.get(e.type);if(!n)throw Error(`TransitionActionRegistry: unknown action type '${e.type}'. Registered types: ${[...this.factories.keys()].join(`, `)}`);await n().execute(e,t)}has(e){return this.factories.has(e)}listTypes(){return[...this.factories.keys()]}},rt=class{rulesBySource=new Map;rulesByEventType=new Map;ruleIdSet=new Set;register(e,t){if(t.length===0)return;if(this.rulesBySource.has(e))throw Error(`TransitionRuleRegistry: duplicate source '${e}'`);let n=new Set,r=[];for(let i of t){let t=ve.parse(i);if(n.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' within source '${e}'`);if(this.ruleIdSet.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' from source '${e}'`);n.add(t.id),r.push({rule:t,condition:t.when===void 0?void 0:Ae.parse(t.when)})}for(let e of r){let{rule:t}=e;this.ruleIdSet.add(t.id);let n=this.rulesByEventType.get(t.on)??[];n.push(e),this.rulesByEventType.set(t.on,n)}this.rulesBySource.set(e,r)}deregister(e){let t=this.rulesBySource.get(e);if(t){for(let{rule:e}of t){this.ruleIdSet.delete(e.id);let t=this.rulesByEventType.get(e.on);if(t){let n=t.filter(t=>t.rule.id!==e.id);n.length>0?this.rulesByEventType.set(e.on,n):this.rulesByEventType.delete(e.on)}}this.rulesBySource.delete(e)}}getRulesForEvent(e){let t=this.rulesByEventType.get(e);return t?t.filter(e=>e.rule.enabled):[]}snapshotSource(e){let t=this.rulesBySource.get(e);if(t)return{ruleIds:t.map(e=>e.rule.id)}}},it=class extends w{ruleRegistry;actionRegistry;depthMap=new Map;constructor(e){super(e),this.ruleRegistry=new rt,this.actionRegistry=new nt(e)}onInit(){this.registerHandler(v.created,async e=>{await this.handleArtifactEvent(`artifact.created`,{artifact:e.payload.artifact})}),this.registerHandler(v.revised,async e=>{let t=await this.resolvePreviousRevisedArtifact(e.payload.previous);await this.handleArtifactEvent(`artifact.revised`,{artifact:e.payload.artifact,previous:e.payload.previous,...t===void 0?{}:{previousArtifact:t}})}),this.registerHandler(v.status.changed,async e=>{let t=await this.resolveStatusChangedArtifact(e.payload.artifact);t!==void 0&&await this.handleArtifactEvent(`artifact.status.changed`,{artifact:t,path:e.payload.path,previous:e.payload.previous,current:e.payload.current})})}async handleArtifactEvent(e,t){let n=this.artifactKey(t.artifact),r=this.readDepth(n);if(r>=10){console.warn(`[TransitionPipelineService] Transition depth limit (10) reached for event '${e}' on artifact '${n}'. Loop protection active — skipping rule evaluation.`);return}let i=this.ruleRegistry.getRulesForEvent(e);if(i.length!==0)for(let a of i)await this.evaluateAndDispatch(a,e,t,n,r)}async resolveStatusChangedArtifact(e){let t=await this.bus.requestOptional(v.resolve,{ref:e});if(!t.handled){console.warn(`[TransitionPipelineService] No artifact resolver is registered for status transition on artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}if(t.data.artifact===null){console.warn(`[TransitionPipelineService] Could not resolve status transition artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}return t.data.artifact}async resolvePreviousRevisedArtifact(e){let t=await this.bus.requestOptional(v.resolve,{ref:e});if(!(!t.handled||t.data.artifact===null))return t.data.artifact}async evaluateAndDispatch(e,t,n,r,i){let{rule:a,condition:o}=e,s={...n,_transition:{ruleId:a.id,eventType:t,depth:i+1}};if(o!==void 0){let e={...s},t;try{t=je(o,e)}catch(e){console.error(`[TransitionPipelineService] Condition evaluation error for rule '${a.id}':`,e);return}if(!t)return}try{await this.actionRegistry.dispatch(a.action,s),a.action.type===`workflow.start`&&this.incrementDepth(r)}catch(e){console.error(`[TransitionPipelineService] Action dispatch error for rule '${a.id}' (action type '${a.action.type}'):`,e)}}artifactKey(e){return`${typeof e.kind==`string`?e.kind:`unknown`}:${typeof e.id==`string`?e.id:`unknown`}`}readDepth(e){let t=this.depthMap.get(e);return t===void 0?0:Date.now()>t.expiresAt?(this.depthMap.delete(e),0):t.count}incrementDepth(e){let t=this.depthMap.get(e);this.depthMap.set(e,{count:t===void 0?1:t.count+1,expiresAt:Date.now()+6e4})}};function at(e){return async t=>{let n=await ot(e,t);if(!n)return{handled:!1,sessionId:null,clientAccountId:null,changed:!1};let{sessionId:r}=n,{observation:i,accountObserveRequest:a}=st(t),o=await e.requestOptional(E.account.observe,a);if(!o.handled)return{handled:!1,sessionId:r,clientAccountId:null,changed:!1};let{clientAccountId:s}=o.data;return{handled:!0,sessionId:r,clientAccountId:s,changed:await mt(e,r,i,s)}}}async function ot(t,n){switch(n.locator.kind){case`session`:{let{session:r}=await t.request(e.get,{sessionId:n.locator.sessionId});return r?{sessionId:r.sessionId,session:r}:null}case`adapter-session`:{let{session:r}=await t.request(e.getByAdapterSessionId,{adapterSessionId:n.locator.adapterSessionId});return r?{sessionId:r.sessionId,session:r}:null}case`both`:{let[{session:r},{session:i}]=await Promise.all([t.request(e.get,{sessionId:n.locator.sessionId}),t.request(e.getByAdapterSessionId,{adapterSessionId:n.locator.adapterSessionId})]);if(!r&&!i)return null;if(!r||!i)throw Error(`Session locator mismatch: sessionId "${n.locator.sessionId}" and adapterSessionId "${n.locator.adapterSessionId}" must both resolve the same session`);if(r.sessionId!==i.sessionId)throw Error(`Session locator mismatch: sessionId "${n.locator.sessionId}" and adapterSessionId "${n.locator.adapterSessionId}" resolve to different sessions`);return{sessionId:r.sessionId,session:r}}}}function st(e){let t={clientId:e.clientId,source:e.source,kind:e.kind,observedAt:e.observedAt,payload:ft(e.payload)};return{observation:t,accountObserveRequest:ct(t)}}function ct(e){let t=e.payload,n=lt(t),r=ut(t);if(r.length>0)return{clientId:e.clientId,observedAt:e.observedAt,displayLabel:dt(t,n),identifiers:r};throw Error(`client.session.account.observe for "${e.clientId}" requires canonical client account identifiers`)}function lt(e){return pt(e.accountInfo)??e}function ut(e){let t=e.identifiers;if(!Array.isArray(t))return[];try{return g.array(Ce).min(1).parse(t)}catch(e){throw Error(`client.session.account.observe received malformed canonical client account identifiers`,{cause:e})}}function dt(e,t){return K(e.displayLabel)??K(t.displayLabel)??K(t.email)??K(t.label)}function ft(e){return structuredClone(e)}function pt(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function K(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function mt(t,n,r,i){let a=await t.request(e.update,{sessionId:n,clientId:r.clientId,clientAccountId:i,lastClientIdentityObservation:r});if(!a.success)throw Error(`Failed to update session "${n}" with client account linkage`);return a.clientAccountChanged??!1}const ht=S(`session-storage`).name;var gt=class extends w{constructor(e=_){super(e)}onInit(){let e=at(this.bus);this.registerHandler(E.session.account.observe,async t=>{t.setResult(await e(we.request.parse(t.payload)))})}};const _t={name:`makaio.session-client-account-linking`,displayName:`Session Client Account Linking`,version:`0.1.0`,dependencies:[x(ht),x(`makaio.clients-core`)],critical:!1,create:e=>new gt(e.bus)},vt={name:`framework-shell`,displayName:`Shell`,version:`0.1.0`,surface:`interactive`,windows:[{id:`main`,style:`utility`,width:1e3,height:700,singleton:!0}]};async function yt(e){let{harnesses:t}=await e.request(m.list,{}),n=new Set(t.map(e=>e.id));for(let t of he){if(n.has(t.id))continue;let r={...t};await e.request(m.set,{harness:r})}}function q(e,t,n){return e??t??n}var bt=class extends w{static storage={drizzle:h};constructor(e=_){super(e)}async onInit(){await yt(this.bus),this.registerHandlers()}registerHandlers(){this.registerHandler(y.get,async e=>{let t=await this.loadHarness(e.payload);if(!t)throw Error(`Harness not found`);e.setResult(t)}),this.registerHandler(y.list,async e=>{let{harnesses:t}=await this.bus.request(m.list,e.payload);e.setResult({harnesses:t})}),this.registerHandler(y.set,async e=>{let t=await this.upsertHarness(e.payload);e.setResult({id:t})}),this.registerHandler(y.delete,async e=>{let{deleted:t}=await this.bus.request(m.delete,{id:e.payload.id});e.setResult({success:t})}),this.registerHandler(y.getDefault,async e=>{let t=await this.getDefaultHarness(e.payload.adapterName,e.payload.clientId);e.setResult(t)}),this.registerHandler(y.resolve,async e=>{let{adapterName:t,clientId:n,personaHarnessId:r,profileHarnessId:i}=e.payload;if(r){let i=await this.resolveAndValidateHarness(r,t,`persona`,n);e.setResult(i);return}if(i){let r=await this.resolveAndValidateHarness(i,t,`profile`,n);e.setResult(r);return}let a=await this.getDefaultHarness(t,n);e.setResult(a)}),this.registerHandler(y.getSchema,({setResult:e})=>{let{$schema:t,...n}=g.toJSONSchema(ge);e({schema:n,uiConfig:{editMode:`fullPage`,hiddenFields:[`isDefault`]}})})}async upsertHarness(e){let t=await this.resolveHarnessId(e.name,e.adapterName,e.clientId),n=await this.loadHarness({id:t,adapterName:e.adapterName,clientId:e.clientId}),r=this.mergeHarnessPayload(t,e,n);return r.adapterName&&await this.validateNativeTools(r.adapterName,r.nativeTools),await this.bus.request(m.set,{harness:r}),t}mergeHarnessPayload(e,t,n){let r={enabled:[],disabled:[]};return{id:e,name:t.name,description:q(t.description,n?.description,void 0),adapterName:t.adapterName,clientId:q(t.clientId,n?.clientId,void 0),env:q(t.env,n?.env,void 0),credentials:q(t.credentials,n?.credentials,void 0),cwd:q(t.cwd,n?.cwd,void 0),approvalPolicy:q(t.approvalPolicy,n?.approvalPolicy,`always-ask`),nativeTools:q(t.nativeTools,n?.nativeTools,r),registryTools:q(t.registryTools,n?.registryTools,r),skills:q(t.skills,n?.skills,void 0),toolCapabilityMap:t.toolCapabilityMap??n?.toolCapabilityMap,capabilityOverrides:t.capabilityOverrides??n?.capabilityOverrides,toolApprovalOverrides:t.toolApprovalOverrides??n?.toolApprovalOverrides,isDefault:q(t.isDefault,n?.isDefault,!1),enabled:q(t.enabled,n?.enabled,!0)}}async resolveHarnessId(e,t,n){let r=n??t,{harnesses:i}=await this.bus.request(m.list,{name:e}),a=i.find(t=>t.name===e&&(t.clientId??t.adapterName)===r);if(a)return a.id;let o=i.find(t=>t.name===e&&(t.clientId??t.adapterName)!==r);if(o){let t=o.clientId?`client '${o.clientId}'`:`adapter '${o.adapterName}'`;throw Error(`Harness "${e}" already exists with scope ${t}; cannot change scope to ${r??`(none)`}`)}return this.createStableHarnessId(e,r)}async loadHarness(e){if(e.id){let{harness:t}=await this.bus.request(m.get,{id:e.id});return t&&(!e.adapterName||t.adapterName===e.adapterName)&&(!e.clientId||t.clientId===e.clientId)?t:null}if(!e.name)return null;let{harnesses:t}=await this.bus.request(m.list,{name:e.name,adapterName:e.adapterName,clientId:e.clientId});return e.clientId?t.find(t=>t.clientId===e.clientId)??null:e.adapterName?t.find(t=>t.adapterName===e.adapterName)??null:t[0]??null}async getDefaultHarness(e,t){if(t){let{harnesses:e}=await this.bus.request(m.list,{clientId:t}),n=e.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=e.find(e=>e.enabled);if(r)return r}if(e){let{harnesses:t}=await this.bus.request(m.list,{adapterName:e}),n=t.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=t.find(e=>e.enabled);if(r)return r}let n=t?e?`client '${t}' or adapter '${e}'`:`client '${t}'`:`adapter '${e}'`;throw Error(`No harness available for ${n}`)}assertHarnessAdapterMatch(e,t,n,r){if(e.adapterName&&t&&e.adapterName!==t)throw Error(`Resolved ${n} harness adapter mismatch: expected "${t}", got "${e.adapterName}"`);if(e.clientId&&r&&e.clientId!==r)throw Error(`Resolved ${n} harness client mismatch: expected "${r}", got "${e.clientId}"`)}assertHarnessEnabled(e,t){if(!e.enabled)throw Error(`Resolved ${t} harness is disabled: ${e.id}`)}async validateNativeTools(e,t){let n=await this.bus.requestOptional(pe.getCapabilities,{adapterName:e});if(!n.handled)return;let r=new Set(n.data.nativeTools),i=[...t.enabled,...t.disabled].filter(e=>!r.has(e));if(i.length>0)throw Error(`Tool '${i[0]}' not found in adapter '${e}' native tools. Declared tools: ${[...r].join(`, `)}`)}createStableHarnessId(e,t){return`harness-${ue(`sha256`).update(`${t??``}\0${e}`).digest(`hex`).slice(0,24)}`}async resolveAndValidateHarness(e,t,n,r){let i=await this.loadHarness({id:e});if(!i)throw Error(`${n===`persona`?`Persona`:`Profile`} harness not found: ${e}`);return this.assertHarnessAdapterMatch(i,t,n,r),this.assertHarnessEnabled(i,n),i}};const xt={name:`makaio.harness`,displayName:`Harness`,version:`0.1.0`,critical:!0,storage:{registerHandlers:T(h)},create:e=>new bt(e.bus)},J=S(`session-storage`),Y=S(`session-bridge`),X=S(`session`),St=S(`session-orchestrator`),Z=S(`tool-registry`),Ct=S(`tool-approval`),wt=S(`tray-menu`),Tt=S(`capability`),Et=S(`model-registry`),Dt=S(`workflow-block-registry`),Ot=S(`transition-pipeline`),kt=S(`filesystem`),At=S(`git`),jt=S(`artifact-schema-registry`),Mt=S(`artifact-lifecycle-hook-registry`),Nt=S(`facet-namespace-registry`),Pt=S(`surface-binding-registry`),Ft={name:jt.name,displayName:`Artifact Schema Registry`,version:`0.1.0`,critical:!0,create:e=>new I(e.bus)},It={name:Mt.name,displayName:`Artifact Lifecycle Hook Registry`,version:`0.1.0`,critical:!0,create:e=>new B(e.bus)},Lt={name:Nt.name,displayName:`Facet Namespace Registry`,version:`0.1.0`,critical:!0,create:e=>new Be(e.bus)},Rt={name:Pt.name,displayName:`Surface Binding Registry`,version:`0.1.0`,critical:!0,create:e=>new Ve(e.bus)},zt={name:J.name,displayName:`Session Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:T((e,n)=>{let a=[],o=e=>{for(let t=a.length-1;t>=0;--t)try{a[t]?.()}catch(t){console.warn(`[sessionStoragePackage] cleanup failed during ${e}:`,t)}a.length=0};try{a.push(c(e,n)),a.push(i(e,n)),a.push(r(e,n)),a.push(ne(e,n)),a.push(t(e,n)),a.push(te(e,n)),a.push(l(e,n)),a.push(f(e,n)),a.push(s(e,n)),a.push(u(e)),a.push(ee(e)),a.push(d(e))}catch(e){throw o(`rollback`),e}return()=>{o(`shutdown`)}})}},Bt={name:Y.name,displayName:`Session Bridge`,version:`0.1.0`,dependencies:[x(J.name)],critical:!0,create:e=>new n(e.bus)},Vt={name:X.name,displayName:`Session`,version:`0.1.0`,dependencies:[x(Y.name)],critical:!0,create:e=>new o(e.bus)},Q={name:St.name,displayName:`Session Orchestrator`,version:`0.1.0`,dependencies:[x(X.name),x(W.name)],critical:!0,runtimeOwnership:{sessionOrchestrator:!0},create:e=>new a(e.bus,e.machineId)},Ht={name:Z.name,displayName:`Tool Registry`,version:`0.1.0`,critical:!0,create:e=>new Je({bus:e.bus})},Ut={name:Ct.name,displayName:`Tool Approval`,version:`0.1.0`,dependencies:[x(Z.name)],critical:!0,create:e=>new oe(e.bus)},Wt={name:wt.name,displayName:`Tray Menu`,version:`0.1.0`,critical:!0,create:e=>new se(e.bus)},Gt={name:Tt.name,displayName:`Capability`,version:`0.1.0`,critical:!0,create:e=>new re(e.bus)},Kt={name:Dt.name,displayName:`Workflow Block Registry`,version:`0.1.0`,critical:!0,create:e=>new Ye(e.bus)},$={name:Ot.name,displayName:`Transition Pipeline`,version:`0.1.0`,critical:!0,create:e=>new it(e.bus)},qt={name:kt.name,displayName:`Filesystem`,version:`0.1.0`,critical:!0,create:e=>new le(e.bus,e.machineId)},Jt={name:At.name,displayName:`Git`,version:`0.1.0`,dependencies:[x(kt.name)],critical:!0,create:e=>new Ne(e.bus)};function Yt(e){return{name:Et.name,displayName:`Model Registry`,version:`0.1.0`,critical:!0,create:t=>new ie({bus:t.bus,fetcher:e})}}const Xt=[Ft,It,Lt,Rt,zt,Bt,_t,Vt,Q,ce,Ht,Ut,Wt,Gt,xt,W,vt,Kt,$,Jt,qt];function Zt(){let e=new Map;return{filter:e=>!!e.tools?.createToolsets,async processActivated(t,n,r){let i=r.getService(Z);if(!i)throw Error(`ToolRegistry is not available. Ensure toolRegistryPackage is included in the composition root.`);let a=n.tools.createToolsets(r),o=[];try{for(let e of a)await i.register(e),o.push(()=>i.deregister(e.metadata.name))}catch(e){for(let e=o.length-1;e>=0;--e)try{await o[e]()}catch(e){console.error(`[ToolContributionProcessor] Rollback error for "${t}":`,e)}throw e}e.set(t,o)},async processStopped(t){let n=e.get(t);if(n){for(let e=n.length-1;e>=0;--e)try{await n[e]()}catch(e){console.error(`[ToolContributionProcessor] Deregister error for "${t}":`,e)}e.delete(t)}}}}export{Ut as A,Je as B,Lt as C,Vt as D,Q as E,it as F,Ve as G,Ue as H,rt as I,L as J,Be as K,nt as L,$ as M,Wt as N,zt as O,Kt as P,G as R,Yt as S,Bt as T,He as U,W as V,U as W,I as Y,wt as _,jt as a,Ft as b,Et as c,J as d,X as f,Ot as g,Z as h,Mt as i,Ht as j,Rt as k,Y as l,Ct as m,Oe as n,Tt as o,Pt as p,B as q,Zt as r,Nt as s,Ee as t,St as u,Dt as v,Xt as w,Gt as x,It as y,Ye as z};
@@ -1,4 +1,4 @@
1
- import { mt as ArtifactRevision$1 } from "./index-DKNmj2sa.mjs";
1
+ import { mt as ArtifactRevision$1 } from "./index-B_FtZ3Gn.mjs";
2
2
  import { i as JsonValue$1 } from "./json-value-DtIkQN7g.mjs";
3
3
  import { z } from "zod";
4
4
  import * as _$_makaio_contracts0 from "@makaio/framework/contracts";