@stigmer/cli 3.12.0 → 3.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stigmer/cli",
3
- "version": "3.12.0",
3
+ "version": "3.12.1",
4
4
  "description": "Stigmer command-line interface — manage agents, workflows, MCP servers, skills, and executions from the terminal",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -35,10 +35,10 @@
35
35
  "@connectrpc/connect": "^2.0.0",
36
36
  "@connectrpc/connect-node": "^2.1.1",
37
37
  "@modelcontextprotocol/sdk": "^1.26.0",
38
- "@stigmer/ink": "3.12.0",
39
- "@stigmer/mcp-server": "3.12.0",
40
- "@stigmer/protos": "3.12.0",
41
- "@stigmer/sdk": "3.12.0",
38
+ "@stigmer/ink": "3.12.1",
39
+ "@stigmer/mcp-server": "3.12.1",
40
+ "@stigmer/protos": "3.12.1",
41
+ "@stigmer/sdk": "3.12.1",
42
42
  "commander": "^12.1.0",
43
43
  "fflate": "^0.8.3",
44
44
  "ink": "^7.0.0",
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/resources/apply/apply.ts"],"names":[],"mappings":"AAQA,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AAExF,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,4DAA4D,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,EAAE,KAAK,YAAY,EAAkB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAErF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC;IACtC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAY3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAgB/E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAG9D;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAEvE;AAED,mFAAmF;AACnF,wBAAsB,SAAS,CAC7B,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAMpD;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAElF"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/resources/apply/apply.ts"],"names":[],"mappings":"AAQA,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AAIxF,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,4DAA4D,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,EAAE,KAAK,YAAY,EAAkB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAErF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC;IACtC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAY3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAgB/E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAG9D;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAEvE;AAED,mFAAmF;AACnF,wBAAsB,SAAS,CAC7B,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAMpD;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,YAAY,CAAC,CAgBvB;AA2DD,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAElF"}
@@ -7,6 +7,8 @@
7
7
  // (org → mcp_server → agent → workflow → …) land before their dependents.
8
8
  import { create, fromJson } from "@bufbuild/protobuf";
9
9
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
10
+ import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
11
+ import { UpdateVisibilityInputSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
10
12
  import { ApiResourceMetadataSchema, } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
11
13
  import { UsageError } from "../../errors/index.js";
12
14
  import { CommandResult } from "../../output/index.js";
@@ -91,18 +93,63 @@ export function marshalItem(item) {
91
93
  * detection, and result shaping live (DD-009 §6).
92
94
  */
93
95
  export async function applyMessage(controller, handler, message, org, dryRun) {
94
- const warning = injectOrg(message, org);
96
+ const orgWarning = injectOrg(message, org);
95
97
  const created = (metaOf(message)?.id ?? "") === "";
96
98
  if (dryRun) {
97
- return { result: buildDryRunResult(handler, message), warning };
99
+ return { result: buildDryRunResult(handler, message), warning: orgWarning };
98
100
  }
99
101
  const applied = await handler.apply(controller, message);
102
+ const visibilityWarning = await applyDeclaredVisibility(controller, handler, message, applied);
103
+ const warning = combineWarnings(orgWarning, visibilityWarning);
100
104
  const result = buildApplyResult(handler, applied, created);
101
105
  if (handler.kind === ApiResourceKind.mcp_server) {
102
106
  return { result, appliedMcpServer: applied, warning, applied };
103
107
  }
104
108
  return { result, warning, applied };
105
109
  }
110
+ /**
111
+ * Land a manifest-declared visibility through the guarded door. Plain
112
+ * updates preserve the stored visibility on both editions (oss#573) — the
113
+ * `updateVisibility` RPC is the only mutation path, so when the applied
114
+ * resource comes back with a different level than the manifest declared,
115
+ * follow up with one RPC (the skill-push precedent: no-ops are skipped, an
116
+ * unchanged manifest costs nothing extra). Server-side guard rejections
117
+ * (unsupported level, default-instance) propagate as command failures —
118
+ * the spec update has landed at that point, and the error says so.
119
+ *
120
+ * Returns a warning (instead of following up) for kinds without the RPC:
121
+ * their manifests can only carry a level the create path already rejected,
122
+ * so a diff here means a pre-existing resource and an unsupported ask.
123
+ */
124
+ async function applyDeclaredVisibility(controller, handler, message, applied) {
125
+ const declared = metaOf(message)?.visibility ?? ApiResourceVisibility.api_resource_visibility_unspecified;
126
+ if (declared === ApiResourceVisibility.api_resource_visibility_unspecified)
127
+ return undefined;
128
+ const appliedMeta = metaOf(applied);
129
+ const resourceId = appliedMeta?.id ?? "";
130
+ if (resourceId === "" || appliedMeta?.visibility === declared)
131
+ return undefined;
132
+ if (handler.updateVisibility === undefined) {
133
+ return (`${handler.displayName} visibility cannot be changed declaratively — ` +
134
+ "the manifest's metadata.visibility was ignored (the stored value is kept)");
135
+ }
136
+ try {
137
+ const updated = await handler.updateVisibility(controller, create(UpdateVisibilityInputSchema, { resourceId, visibility: declared }));
138
+ // Reflect the landed level on the outcome the caller already holds.
139
+ const updatedMeta = metaOf(updated);
140
+ if (appliedMeta !== undefined && updatedMeta !== undefined) {
141
+ appliedMeta.visibility = updatedMeta.visibility;
142
+ }
143
+ return undefined;
144
+ }
145
+ catch (err) {
146
+ throw new UsageError(`${handler.displayName} spec applied, but the manifest's visibility change was rejected: ${err.message}`);
147
+ }
148
+ }
149
+ function combineWarnings(...warnings) {
150
+ const present = warnings.filter((w) => w !== undefined);
151
+ return present.length > 0 ? present.join("; ") : undefined;
152
+ }
106
153
  /** Read a resource message's metadata (id/name/slug/org), if present. */
107
154
  export function resourceMetadata(message) {
108
155
  return metaOf(message);
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/resources/apply/apply.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAE1E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAgC,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AACtH,OAAO,EAEL,yBAAyB,GAC1B,MAAM,4DAA4D,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAqB,cAAc,EAAqB,MAAM,eAAe,CAAC;AAsBrF,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;IAClF,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,KAAa;IAC/D,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,0BAA0B,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC;IAC5F,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,2BAA2B,CAAC,CAAC;IAC/G,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1C,qEAAqE;QACrE,yEAAyE;QACzE,+DAA+D;QAC/D,MAAM,IAAI,UAAU,CAClB,sDAAsD,KAAK,KAAK;YAC9D,6GAA6G,CAChH,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACjG,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,kBAAkB,CAAC,KAA2B;IAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,YAAY,CAAC,CAAC;AAClF,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,UAAwB,EACxB,IAAe,EACf,GAAW,EACX,MAAe;IAEf,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAe;IACzC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,OAAO,IAAI,CAAC,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAwB,EACxB,OAAqB,EACrB,OAAgB,EAChB,GAAW,EACX,MAAe;IAEf,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IAEnD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,UAAU,EAAE,CAAC;QAChD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9E,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB;IAC9B,OAAQ,OAAyD,CAAC,QAAQ,CAAC;AAC7E,CAAC;AAED,+EAA+E;AAC/E,2EAA2E;AAC3E,iDAAiD;AACjD,SAAS,SAAS,CAAC,OAAgB,EAAE,GAAW;IAC9C,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,MAAM,GAAG,OAAwD,CAAC;IACxE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO,iBAAiB,MAAM,CAAC,QAAQ,CAAC,GAAG,8BAA8B,GAAG,aAAa,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IAClH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAqB,EAAE,OAAgB,EAAE,OAAgB;IACjF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC;IAC/G,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACtD,IAAI,IAAI,EAAE,EAAE;QAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,IAAI,IAAI,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAqB,EAAE,OAAgB;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,WAAW,UAAU,CAAC,CAAC;IACpE,IAAI,IAAI,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,EAAE,GAAG;QAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/resources/apply/apply.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAE1E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAgC,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AACtH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAEL,yBAAyB,GAC1B,MAAM,4DAA4D,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAqB,cAAc,EAAqB,MAAM,eAAe,CAAC;AAsBrF,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;IAClF,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,KAAa;IAC/D,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,0BAA0B,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC;IAC5F,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,2BAA2B,CAAC,CAAC;IAC/G,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1C,qEAAqE;QACrE,yEAAyE;QACzE,+DAA+D;QAC/D,MAAM,IAAI,UAAU,CAClB,sDAAsD,KAAK,KAAK;YAC9D,6GAA6G,CAChH,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACjG,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,kBAAkB,CAAC,KAA2B;IAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,YAAY,CAAC,CAAC;AAClF,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,UAAwB,EACxB,IAAe,EACf,GAAW,EACX,MAAe;IAEf,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAe;IACzC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,OAAO,IAAI,CAAC,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAwB,EACxB,OAAqB,EACrB,OAAgB,EAChB,GAAW,EACX,MAAe;IAEf,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IAEnD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,UAAU,EAAE,CAAC;QAChD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9E,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,uBAAuB,CACpC,UAAwB,EACxB,OAAqB,EACrB,OAAgB,EAChB,OAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,IAAI,qBAAqB,CAAC,mCAAmC,CAAC;IAC1G,IAAI,QAAQ,KAAK,qBAAqB,CAAC,mCAAmC;QAAE,OAAO,SAAS,CAAC;IAE7F,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC;IACzC,IAAI,UAAU,KAAK,EAAE,IAAI,WAAW,EAAE,UAAU,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhF,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,CACL,GAAG,OAAO,CAAC,WAAW,gDAAgD;YACtE,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAC5C,UAAU,EACV,MAAM,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAC1E,CAAC;QACF,oEAAoE;QACpE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC3D,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;QAClD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAClB,GAAG,OAAO,CAAC,WAAW,qEAAsE,GAAa,CAAC,OAAO,EAAE,CACpH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAG,QAAgC;IAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACrE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB;IAC9B,OAAQ,OAAyD,CAAC,QAAQ,CAAC;AAC7E,CAAC;AAED,+EAA+E;AAC/E,2EAA2E;AAC3E,iDAAiD;AACjD,SAAS,SAAS,CAAC,OAAgB,EAAE,GAAW;IAC9C,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,MAAM,GAAG,OAAwD,CAAC;IACxE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO,iBAAiB,MAAM,CAAC,QAAQ,CAAC,GAAG,8BAA8B,GAAG,aAAa,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IAClH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAqB,EAAE,OAAgB,EAAE,OAAgB;IACjF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC;IAC/G,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACtD,IAAI,IAAI,EAAE,EAAE;QAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,IAAI,IAAI,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAqB,EAAE,OAAgB;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,WAAW,UAAU,CAAC,CAAC;IACpE,IAAI,IAAI,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,EAAE,GAAG;QAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -86,9 +86,9 @@ export type SkillSource = {
86
86
  };
87
87
  /**
88
88
  * Reconcile a project's membership: push skills first (agents may reference
89
- * them), apply each resource through the shared apply core, collect references
90
- * to the member-eligible ones, run post-apply MCP discovery, then apply the
91
- * project with that exact member set so the server can reconcile by
89
+ * them), apply MCP servers and run capability discovery on them, apply the
90
+ * remaining resources, collect references to the member-eligible ones, then
91
+ * apply the project with that exact member set so the server can reconcile by
92
92
  * set-difference (orphan pruning is server-side; see S1 in commands/apply.ts).
93
93
  */
94
94
  export declare function reconcileProjectMembers(project: Project, resources: readonly ReconcileResource[], skillSources: readonly SkillSource[], deps: DeclarativeDeps): Promise<CommandResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"declarative.d.ts","sourceRoot":"","sources":["../../../src/resources/apply/declarative.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"declarative.d.ts","sourceRoot":"","sources":["../../../src/resources/apply/declarative.ts"],"names":[],"mappings":"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"}
@@ -199,9 +199,9 @@ export async function applyDeclarative(detect, deps) {
199
199
  const DEFAULT_IGNORE_OPTIONS = { respectGitignore: true, extraIgnore: [], extraInclude: [] };
200
200
  /**
201
201
  * Reconcile a project's membership: push skills first (agents may reference
202
- * them), apply each resource through the shared apply core, collect references
203
- * to the member-eligible ones, run post-apply MCP discovery, then apply the
204
- * project with that exact member set so the server can reconcile by
202
+ * them), apply MCP servers and run capability discovery on them, apply the
203
+ * remaining resources, collect references to the member-eligible ones, then
204
+ * apply the project with that exact member set so the server can reconcile by
205
205
  * set-difference (orphan pruning is server-side; see S1 in commands/apply.ts).
206
206
  */
207
207
  export async function reconcileProjectMembers(project, resources, skillSources, deps) {
@@ -211,13 +211,14 @@ export async function reconcileProjectMembers(project, resources, skillSources,
211
211
  const pushed = await pushSkillSource(deps.stigmer, src, deps.org, deps.info);
212
212
  members.push(reference(deps.org, ApiResourceKind.skill, pushed.slug));
213
213
  }
214
- // Then each resource, collecting member references from the APPLIED result so
215
- // membership carries the server's authoritative slug. (This is the unified
216
- // policy: the declarative track used to read the pre-apply YAML slug, the Go
217
- // synthesis track read the applied result — converging on the applied result
218
- // is correct for both and matches what the backend actually stored.)
214
+ // Each resource is applied through the shared apply core, collecting member
215
+ // references from the APPLIED result so membership carries the server's
216
+ // authoritative slug. (This is the unified policy: the declarative track
217
+ // used to read the pre-apply YAML slug, the Go synthesis track read the
218
+ // applied result — converging on the applied result is correct for both and
219
+ // matches what the backend actually stored.)
219
220
  const appliedMcpServers = [];
220
- for (const res of resources) {
221
+ const applyOne = async (res) => {
221
222
  const outcome = await applyMessage(deps.controller, res.handler, res.message, deps.org, false);
222
223
  if (outcome.warning !== undefined)
223
224
  deps.warn(outcome.warning);
@@ -228,8 +229,26 @@ export async function reconcileProjectMembers(project, resources, skillSources,
228
229
  if (slug)
229
230
  members.push(reference(deps.org, res.handler.kind, slug));
230
231
  }
232
+ };
233
+ // MCP servers first, then capability discovery, then everything else — the
234
+ // dependency principle applied to capabilities, not just existence. The
235
+ // server validates agent enabled_tools against discovered capabilities at
236
+ // apply time (stigmer/stigmer#402), and the backend's own post-apply
237
+ // connect is asynchronous; discovering here means agents in this apply
238
+ // validate against the toolset this apply just shipped, not the previous
239
+ // generation's (which would falsely reject e.g. a seedpack upgrade that
240
+ // adds a tool and enables it in the same pass). Discovery stays
241
+ // best-effort: a failed connect warns, capabilities stay stale, and the
242
+ // dependent apply surfaces an actionable error listing last-known tools.
243
+ for (const res of resources) {
244
+ if (res.handler.kind === ApiResourceKind.mcp_server)
245
+ await applyOne(res);
231
246
  }
232
247
  await discoverAppliedMcpServers(deps.stigmer, appliedMcpServers, deps.org, deps.info);
248
+ for (const res of resources) {
249
+ if (res.handler.kind !== ApiResourceKind.mcp_server)
250
+ await applyOne(res);
251
+ }
233
252
  injectOrg(project, deps.org);
234
253
  if (project.spec === undefined)
235
254
  project.spec = create(ProjectSpecSchema, {});
@@ -1 +1 @@
1
- {"version":3,"file":"declarative.js","sourceRoot":"","sources":["../../../src/resources/apply/declarative.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"declarative.js","sourceRoot":"","sources":["../../../src/resources/apply/declarative.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,2EAA2E;AAC3E,gFAAgF;AAChF,2EAA2E;AAC3E,0BAA0B;AAC1B,EAAE;AACF,2DAA2D;AAC3D,6DAA6D;AAC7D,uEAAuE;AACvE,8EAA8E;AAC9E,oEAAoE;AAEpE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAgB,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAEL,0BAA0B,GAC3B,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AACtH,OAAO,EAEL,yBAAyB,GAC1B,MAAM,4DAA4D,CAAC;AACpE,OAAO,EAAgB,aAAa,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAE1F,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAmB,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAkB,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAChI,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAe7B;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,QAAQ,GAAG,iBAAiB;IACxE,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAC9C,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,KAAK,GAAU,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;YAC1E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;QAClF,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,4DAA4D;AAC5D,SAAS,WAAW,CAAC,UAAkB;IACrC,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,GAAG,UAAU,uBAAuB,CAAC,CAAC;IAClF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,GAAG,UAAU,yCAAyC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAClB,oCAAoC,UAAU,KAAM,GAAa,CAAC,OAAO,MAAM;YAC7E,8EAA8E,CACjF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC;gBAAE,SAAS;YACvE,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/E,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,gBAAgB,EAAE,CAAC;YACxE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC;gBAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW;IAC3C,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,CAAC;AAC3C,CAAC;AAED,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAwB,EAAE,IAA4B;IAC1F,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;gBAAE,SAAS;YACrC,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAChC,IAAI,CAAC,YAAY,IAAI,2FAA2F,CAAC,CAAC;gBAClH,SAAS;YACX,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,0CAA0C;AAC1C,MAAM,YAAY,GAAiC,IAAI,GAAG,CAAC;IACzD,eAAe,CAAC,KAAK;IACrB,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,UAAU;IAC1B,eAAe,CAAC,KAAK;CACtB,CAAC,CAAC;AAmBH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAoB,EAAE,IAAqB;IAChF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACtC,IAAI,OAAO,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACrD,MAAM,IAAI,UAAU,CAAC,mDAAmD,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,mBAAmB,aAAa,CAAC,MAAM,aAAa,SAAS,CAAC,MAAM,WAAW,CAAC,CAAC;IAEhH,MAAM,SAAS,GAAwB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpH,MAAM,YAAY,GAAkB,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEpG,OAAO,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AACzE,CAAC;AA2BD,4EAA4E;AAC5E,wEAAwE;AACxE,MAAM,sBAAsB,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAc,EAAE,YAAY,EAAE,EAAc,EAAE,CAAC;AAErH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAgB,EAChB,SAAuC,EACvC,YAAoC,EACpC,IAAqB;IAErB,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,4CAA4C;IAC5C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,4EAA4E;IAC5E,wEAAwE;IACxE,yEAAyE;IACzE,wEAAwE;IACxE,4EAA4E;IAC5E,6CAA6C;IAC7C,MAAM,iBAAiB,GAAgB,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAsB,EAAiB,EAAE;QAC/D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/F,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS;YAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC7F,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACxE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC,CAAC;IAEF,2EAA2E;IAC3E,wEAAwE;IACxE,0EAA0E;IAC1E,qEAAqE;IACrE,uEAAuE;IACvE,yEAAyE;IACzE,wEAAwE;IACxE,gEAAgE;IAChE,wEAAwE;IACxE,yEAAyE;IACzE,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,UAAU;YAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtF,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,UAAU;YAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;IAED,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC/B,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE/E,OAAO,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAe,EACf,GAAgB,EAChB,GAAW,EACX,IAA4B;IAE5B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,sBAAsB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACzE,OAAO,MAAM,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE;YAChD,MAAM,EAAE,GAAG,CAAC,GAAG;YACf,MAAM,EAAE,GAAG,CAAC,GAAG;YACf,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG;YACH,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,sBAAsB;SAChC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,yEAAyE;AACzE,SAAS,YAAY,CAAC,OAAgB;IACpC,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAAC,MAAoB,EAAE,IAAkD;IAIzG,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,IAAI,SAAS,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,mDAAmD,CAAC,CAAC;IACvG,MAAM,KAAK,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,KAAK,CAAC,MAAM,wBAAwB,CAAC,CAAC;IACjG,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACnE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAe;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,WAAW,CAAC,CAAC;IACpG,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,UAAU,CAAC,CAAC;IACzE,IAAI,IAAI,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,4DAA4D;AAC5D,SAAS,MAAM,CAAC,IAAe;IAC7B,MAAM,IAAI,GAAI,IAAI,CAAC,QAA8D,CAAC,QAAQ,CAAC;IAC3F,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,OAAO;QACL,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC3D,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,IAAqB,EAAE,IAAY;IACjE,OAAO,MAAM,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,OAAgB,EAAE,GAAW;IAC9C,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO;IACvB,MAAM,MAAM,GAAG,OAAwD,CAAC;IACxE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,SAAS,sBAAsB,CAAC,UAAkB;IAChD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;IACrF,MAAM;SACH,UAAU,CAAC,EAAE,CAAC;SACd,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC;SAC9B,IAAI,CACH,gHAAgH,CACjH,CAAC;IACJ,MAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAgB,EAChB,OAAwC,EACxC,OAAgB;IAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,SAAS,CAAC;IACjD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,IAAI,kBAAkB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;IAE1G,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;QAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEnE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC3D,KAAK,MAAM,IAAI,IAAI;YACjB,eAAe,CAAC,KAAK;YACrB,eAAe,CAAC,QAAQ;YACxB,eAAe,CAAC,UAAU;YAC1B,eAAe,CAAC,KAAK;SACtB,EAAE,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS;gBAAE,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACjD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9G,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1F,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1F,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI;QAAE,MAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACtG,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,OAAwC;IAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAClD,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { DescMessage, DescService, Message } from "@bufbuild/protobuf";
2
2
  import type { Client } from "@connectrpc/connect";
3
+ import type { UpdateVisibilityInput } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
3
4
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
4
5
  /** Accessor for a raw Connect client over a generated service controller. */
5
6
  export type ControllerFn = <Desc extends DescService>(service: Desc) => Client<Desc>;
@@ -18,6 +19,14 @@ export interface ApplyHandler {
18
19
  readonly applyOrder: number;
19
20
  /** Drive the controller's `apply` RPC with the full resource message. */
20
21
  apply(controller: ControllerFn, message: Message): Promise<Message>;
22
+ /**
23
+ * Drive the controller's `updateVisibility` RPC — the only door for
24
+ * visibility changes (plain updates preserve stored visibility, oss#573).
25
+ * Present exactly when the kind has the RPC; the apply core follows up
26
+ * through it when a manifest-declared level differs from the stored one.
27
+ * Manifest kinds inherit the binding from the SDK registry.
28
+ */
29
+ updateVisibility?(controller: ControllerFn, input: UpdateVisibilityInput): Promise<Message>;
21
30
  }
22
31
  export declare const APPLY_HANDLERS: ReadonlyMap<ApiResourceKind, ApplyHandler>;
23
32
  //# sourceMappingURL=handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/resources/apply/handlers.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQlD,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AAKtH,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,SAAS,WAAW,EAAE,OAAO,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AAErF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AA4BD,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,eAAe,EAAE,YAAY,CAGpE,CAAC"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/resources/apply/handlers.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAQlG,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AAKtH,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,SAAS,WAAW,EAAE,OAAO,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AAErF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7F;AA6BD,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,eAAe,EAAE,YAAY,CAGpE,CAAC"}
@@ -45,6 +45,7 @@ const CLI_EXTRA_HANDLERS = [
45
45
  schema: WorkflowInstanceSchema,
46
46
  applyOrder: 13,
47
47
  apply: (c, m) => c(WorkflowInstanceCommandController).apply(m),
48
+ updateVisibility: (c, i) => c(WorkflowInstanceCommandController).updateVisibility(i),
48
49
  },
49
50
  {
50
51
  kind: ApiResourceKind.session,
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/resources/apply/handlers.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,qEAAqE;AACrE,wEAAwE;AACxE,6EAA6E;AAC7E,EAAE;AACF,uEAAuE;AACvE,qEAAqE;AACrE,qEAAqE;AACrE,2EAA2E;AAC3E,kDAAkD;AAClD,EAAE;AACF,qEAAqE;AACrE,iEAAiE;AACjE,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,kEAAkE;AAClE,0EAA0E;AAI1E,OAAO,EAAgB,aAAa,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAEL,sBAAsB,GACvB,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,mEAAmE,CAAC;AACtH,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AACtH,OAAO,EAAqB,kBAAkB,EAAE,MAAM,2DAA2D,CAAC;AAClH,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAsB7C,6EAA6E;AAC7E,oEAAoE;AACpE,MAAM,kBAAkB,GAA4B;IAClD;QACE,IAAI,EAAE,eAAe,CAAC,YAAY;QAClC,WAAW,EAAE,cAAc;QAC3B,MAAM,EAAE,kBAAkB;QAC1B,UAAU,EAAE,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,KAAK,CAAC,CAAiB,CAAC;KAC3E;IACD;QACE,IAAI,EAAE,eAAe,CAAC,iBAAiB;QACvC,WAAW,EAAE,mBAAmB;QAChC,MAAM,EAAE,sBAAsB;QAC9B,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,KAAK,CAAC,CAAqB,CAAC;KACnF;IACD;QACE,IAAI,EAAE,eAAe,CAAC,OAAO;QAC7B,WAAW,EAAE,SAAS;QACtB,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,CAAY,CAAC;KACjE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAA+C,IAAI,GAAG,CAAgC;IAC/G,GAAG,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;IACrE,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;CACzE,CAAC,CAAC"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/resources/apply/handlers.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,qEAAqE;AACrE,wEAAwE;AACxE,6EAA6E;AAC7E,EAAE;AACF,uEAAuE;AACvE,qEAAqE;AACrE,qEAAqE;AACrE,2EAA2E;AAC3E,kDAAkD;AAClD,EAAE;AACF,qEAAqE;AACrE,iEAAiE;AACjE,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,kEAAkE;AAClE,0EAA0E;AAK1E,OAAO,EAAgB,aAAa,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAEL,sBAAsB,GACvB,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,mEAAmE,CAAC;AACtH,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AACtH,OAAO,EAAqB,kBAAkB,EAAE,MAAM,2DAA2D,CAAC;AAClH,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA8B7C,6EAA6E;AAC7E,oEAAoE;AACpE,MAAM,kBAAkB,GAA4B;IAClD;QACE,IAAI,EAAE,eAAe,CAAC,YAAY;QAClC,WAAW,EAAE,cAAc;QAC3B,MAAM,EAAE,kBAAkB;QAC1B,UAAU,EAAE,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,KAAK,CAAC,CAAiB,CAAC;KAC3E;IACD;QACE,IAAI,EAAE,eAAe,CAAC,iBAAiB;QACvC,WAAW,EAAE,mBAAmB;QAChC,MAAM,EAAE,sBAAsB;QAC9B,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,KAAK,CAAC,CAAqB,CAAC;QAClF,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;KACrF;IACD;QACE,IAAI,EAAE,eAAe,CAAC,OAAO;QAC7B,WAAW,EAAE,SAAS;QACtB,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,CAAY,CAAC;KACjE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAA+C,IAAI,GAAG,CAAgC;IAC/G,GAAG,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;IACrE,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;CACzE,CAAC,CAAC"}
@@ -0,0 +1,134 @@
1
+ // Unit tests for the shared apply core's declared-visibility follow-up
2
+ // (oss#573). Plain updates preserve stored visibility on both editions, so
3
+ // the apply RPC's response carries the STORED level; when a manifest
4
+ // declares a different one, the core must land it through the guarded
5
+ // updateVisibility RPC — or warn when the kind has no such door.
6
+
7
+ import { create, type Message } from "@bufbuild/protobuf";
8
+ import { AgentSchema } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
9
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
10
+ import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
11
+ import type { UpdateVisibilityInput } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
12
+ import { describe, expect, it } from "vitest";
13
+ import { applyMessage } from "./apply.js";
14
+ import type { ApplyHandler, ControllerFn } from "./handlers.js";
15
+
16
+ // The controller accessor is only ever forwarded to handler methods, which
17
+ // these tests stub out — a throwing dummy proves nothing else touches it.
18
+ const controller: ControllerFn = () => {
19
+ throw new Error("unexpected controller access");
20
+ };
21
+
22
+ function agent(visibility: ApiResourceVisibility, id = "agent-1") {
23
+ return create(AgentSchema, {
24
+ metadata: { id, name: "a", org: "acme", visibility },
25
+ spec: { instructions: "i" },
26
+ });
27
+ }
28
+
29
+ interface HandlerOptions {
30
+ applyReturns: Message;
31
+ updateVisibility?: (input: UpdateVisibilityInput) => Promise<Message>;
32
+ }
33
+
34
+ function handlerWith(opts: HandlerOptions): { handler: ApplyHandler; calls: UpdateVisibilityInput[] } {
35
+ const calls: UpdateVisibilityInput[] = [];
36
+ const handler: ApplyHandler = {
37
+ kind: ApiResourceKind.agent,
38
+ displayName: "Agent",
39
+ schema: AgentSchema,
40
+ applyOrder: 3,
41
+ apply: () => Promise.resolve(opts.applyReturns),
42
+ ...(opts.updateVisibility !== undefined && {
43
+ updateVisibility: (_c: ControllerFn, input: UpdateVisibilityInput) => {
44
+ calls.push(input);
45
+ return opts.updateVisibility!(input);
46
+ },
47
+ }),
48
+ };
49
+ return { handler, calls };
50
+ }
51
+
52
+ describe("applyMessage declared-visibility follow-up", () => {
53
+ it("lands a declared level the update preserved away, and reflects it on the outcome", async () => {
54
+ // Server preserved stored org; manifest declares public.
55
+ const { handler, calls } = handlerWith({
56
+ applyReturns: agent(ApiResourceVisibility.visibility_org),
57
+ updateVisibility: () => Promise.resolve(agent(ApiResourceVisibility.visibility_public)),
58
+ });
59
+
60
+ const outcome = await applyMessage(controller, handler, agent(ApiResourceVisibility.visibility_public), "acme", false);
61
+
62
+ expect(calls).toHaveLength(1);
63
+ expect(calls[0].resourceId).toBe("agent-1");
64
+ expect(calls[0].visibility).toBe(ApiResourceVisibility.visibility_public);
65
+ expect(outcome.warning).toBeUndefined();
66
+ const appliedMeta = (outcome.applied as { metadata?: { visibility?: ApiResourceVisibility } })?.metadata;
67
+ expect(appliedMeta?.visibility).toBe(ApiResourceVisibility.visibility_public);
68
+ });
69
+
70
+ it("skips the follow-up when the manifest omits visibility", async () => {
71
+ const { handler, calls } = handlerWith({
72
+ applyReturns: agent(ApiResourceVisibility.visibility_org),
73
+ updateVisibility: () => Promise.reject(new Error("must not be called")),
74
+ });
75
+
76
+ const outcome = await applyMessage(
77
+ controller,
78
+ handler,
79
+ agent(ApiResourceVisibility.api_resource_visibility_unspecified),
80
+ "acme",
81
+ false,
82
+ );
83
+
84
+ expect(calls).toHaveLength(0);
85
+ expect(outcome.warning).toBeUndefined();
86
+ });
87
+
88
+ it("skips the follow-up when the server already matches (idempotent re-apply)", async () => {
89
+ const { handler, calls } = handlerWith({
90
+ applyReturns: agent(ApiResourceVisibility.visibility_public),
91
+ updateVisibility: () => Promise.reject(new Error("must not be called")),
92
+ });
93
+
94
+ const outcome = await applyMessage(controller, handler, agent(ApiResourceVisibility.visibility_public), "acme", false);
95
+
96
+ expect(calls).toHaveLength(0);
97
+ expect(outcome.warning).toBeUndefined();
98
+ });
99
+
100
+ it("warns instead of silently swallowing a diff on kinds without the RPC", async () => {
101
+ const { handler } = handlerWith({
102
+ applyReturns: agent(ApiResourceVisibility.visibility_private),
103
+ });
104
+
105
+ const outcome = await applyMessage(controller, handler, agent(ApiResourceVisibility.visibility_public), "acme", false);
106
+
107
+ expect(outcome.warning).toMatch(/visibility cannot be changed declaratively/);
108
+ expect(outcome.warning).toMatch(/stored value is kept/);
109
+ });
110
+
111
+ it("fails loudly when the guarded door rejects, naming the partial state", async () => {
112
+ // e.g. the default-instance FAILED_PRECONDITION or an unsupported level.
113
+ const { handler } = handlerWith({
114
+ applyReturns: agent(ApiResourceVisibility.visibility_org),
115
+ updateVisibility: () => Promise.reject(new Error("default instances do not have their own visibility")),
116
+ });
117
+
118
+ await expect(
119
+ applyMessage(controller, handler, agent(ApiResourceVisibility.visibility_public), "acme", false),
120
+ ).rejects.toThrow(/spec applied, but the manifest's visibility change was rejected/);
121
+ });
122
+
123
+ it("does not follow up in dry-run mode", async () => {
124
+ const { handler, calls } = handlerWith({
125
+ applyReturns: agent(ApiResourceVisibility.visibility_org),
126
+ updateVisibility: () => Promise.reject(new Error("must not be called")),
127
+ });
128
+
129
+ const outcome = await applyMessage(controller, handler, agent(ApiResourceVisibility.visibility_public), "acme", true);
130
+
131
+ expect(calls).toHaveLength(0);
132
+ expect(outcome.applied).toBeUndefined();
133
+ });
134
+ });
@@ -9,6 +9,8 @@
9
9
  import { create, fromJson, type JsonValue, type Message } from "@bufbuild/protobuf";
10
10
  import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
11
11
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
12
+ import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
13
+ import { UpdateVisibilityInputSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
12
14
  import {
13
15
  type ApiResourceMetadata,
14
16
  ApiResourceMetadataSchema,
@@ -131,14 +133,16 @@ export async function applyMessage(
131
133
  org: string,
132
134
  dryRun: boolean,
133
135
  ): Promise<ApplyOutcome> {
134
- const warning = injectOrg(message, org);
136
+ const orgWarning = injectOrg(message, org);
135
137
  const created = (metaOf(message)?.id ?? "") === "";
136
138
 
137
139
  if (dryRun) {
138
- return { result: buildDryRunResult(handler, message), warning };
140
+ return { result: buildDryRunResult(handler, message), warning: orgWarning };
139
141
  }
140
142
 
141
143
  const applied = await handler.apply(controller, message);
144
+ const visibilityWarning = await applyDeclaredVisibility(controller, handler, message, applied);
145
+ const warning = combineWarnings(orgWarning, visibilityWarning);
142
146
  const result = buildApplyResult(handler, applied, created);
143
147
  if (handler.kind === ApiResourceKind.mcp_server) {
144
148
  return { result, appliedMcpServer: applied as McpServer, warning, applied };
@@ -146,6 +150,63 @@ export async function applyMessage(
146
150
  return { result, warning, applied };
147
151
  }
148
152
 
153
+ /**
154
+ * Land a manifest-declared visibility through the guarded door. Plain
155
+ * updates preserve the stored visibility on both editions (oss#573) — the
156
+ * `updateVisibility` RPC is the only mutation path, so when the applied
157
+ * resource comes back with a different level than the manifest declared,
158
+ * follow up with one RPC (the skill-push precedent: no-ops are skipped, an
159
+ * unchanged manifest costs nothing extra). Server-side guard rejections
160
+ * (unsupported level, default-instance) propagate as command failures —
161
+ * the spec update has landed at that point, and the error says so.
162
+ *
163
+ * Returns a warning (instead of following up) for kinds without the RPC:
164
+ * their manifests can only carry a level the create path already rejected,
165
+ * so a diff here means a pre-existing resource and an unsupported ask.
166
+ */
167
+ async function applyDeclaredVisibility(
168
+ controller: ControllerFn,
169
+ handler: ApplyHandler,
170
+ message: Message,
171
+ applied: Message,
172
+ ): Promise<string | undefined> {
173
+ const declared = metaOf(message)?.visibility ?? ApiResourceVisibility.api_resource_visibility_unspecified;
174
+ if (declared === ApiResourceVisibility.api_resource_visibility_unspecified) return undefined;
175
+
176
+ const appliedMeta = metaOf(applied);
177
+ const resourceId = appliedMeta?.id ?? "";
178
+ if (resourceId === "" || appliedMeta?.visibility === declared) return undefined;
179
+
180
+ if (handler.updateVisibility === undefined) {
181
+ return (
182
+ `${handler.displayName} visibility cannot be changed declaratively — ` +
183
+ "the manifest's metadata.visibility was ignored (the stored value is kept)"
184
+ );
185
+ }
186
+
187
+ try {
188
+ const updated = await handler.updateVisibility(
189
+ controller,
190
+ create(UpdateVisibilityInputSchema, { resourceId, visibility: declared }),
191
+ );
192
+ // Reflect the landed level on the outcome the caller already holds.
193
+ const updatedMeta = metaOf(updated);
194
+ if (appliedMeta !== undefined && updatedMeta !== undefined) {
195
+ appliedMeta.visibility = updatedMeta.visibility;
196
+ }
197
+ return undefined;
198
+ } catch (err) {
199
+ throw new UsageError(
200
+ `${handler.displayName} spec applied, but the manifest's visibility change was rejected: ${(err as Error).message}`,
201
+ );
202
+ }
203
+ }
204
+
205
+ function combineWarnings(...warnings: (string | undefined)[]): string | undefined {
206
+ const present = warnings.filter((w): w is string => w !== undefined);
207
+ return present.length > 0 ? present.join("; ") : undefined;
208
+ }
209
+
149
210
  /** Read a resource message's metadata (id/name/slug/org), if present. */
150
211
  export function resourceMetadata(message: Message): ApiResourceMetadata | undefined {
151
212
  return metaOf(message);
@@ -16,6 +16,7 @@ import { create } from "@bufbuild/protobuf";
16
16
  import { type ConnectRouter, createClient } from "@connectrpc/connect";
17
17
  import { connectNodeAdapter } from "@connectrpc/connect-node";
18
18
  import { AgentCommandController } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/command_pb";
19
+ import { McpServerCommandController } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/command_pb";
19
20
  import { SkillSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/api_pb";
20
21
  import { SkillCommandController } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/command_pb";
21
22
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
@@ -34,8 +35,12 @@ const openSessions = new Set<ServerHttp2Session>();
34
35
 
35
36
  let appliedProject: Project | undefined;
36
37
 
38
+ // Ordered log of backend calls, for the discovery-before-dependents contract.
39
+ let events: string[] = [];
40
+
37
41
  beforeEach(() => {
38
42
  appliedProject = undefined;
43
+ events = [];
39
44
  });
40
45
 
41
46
  function makeProject(dir: string): void {
@@ -53,7 +58,22 @@ function makeProject(dir: string): void {
53
58
 
54
59
  beforeAll(async () => {
55
60
  const routes = (router: ConnectRouter) => {
56
- router.service(AgentCommandController, { apply: (req) => req });
61
+ router.service(AgentCommandController, {
62
+ apply: (req) => {
63
+ events.push("agent.apply");
64
+ return req;
65
+ },
66
+ });
67
+ router.service(McpServerCommandController, {
68
+ apply: (req) => {
69
+ events.push("mcpserver.apply");
70
+ return req;
71
+ },
72
+ connect: () => {
73
+ events.push("mcpserver.connect");
74
+ return {};
75
+ },
76
+ });
57
77
  router.service(SkillCommandController, {
58
78
  push: (req) =>
59
79
  create(SkillSchema, {
@@ -123,4 +143,62 @@ describe("applyDeclarative", () => {
123
143
  rmSync(dir, { recursive: true, force: true });
124
144
  }
125
145
  });
146
+
147
+ it("discovers MCP capabilities before applying dependent resources", async () => {
148
+ // Pins the ordering contract behind apply-time enabled_tools validation
149
+ // (stigmer/stigmer#402): the server rejects agent enabled_tools against
150
+ // STORED capabilities, so discovery must refresh them between the MCP
151
+ // server applies and the applies that depend on them. Regressing to
152
+ // discovery-at-the-end resurrects the stale-capabilities race (a seedpack
153
+ // upgrade adding a tool + enabling it in an agent would fail bootstrap).
154
+ const dir = mkdtempSync(join(tmpdir(), "decl-it-order-"));
155
+ try {
156
+ writeFileSync(
157
+ join(dir, "stigmer.yaml"),
158
+ ["kind: Project", "metadata:", " name: Ordered", " slug: ordered", "spec:", " description: d", ""].join("\n"),
159
+ );
160
+ // Named so a naive filename sort would apply the agent first — the
161
+ // reconciler must order by dependency, not by scan order.
162
+ writeFileSync(
163
+ join(dir, "a-agent.yaml"),
164
+ [
165
+ "kind: Agent",
166
+ "metadata:",
167
+ " name: Consumer",
168
+ " slug: consumer",
169
+ "spec:",
170
+ " description: c",
171
+ "",
172
+ ].join("\n"),
173
+ );
174
+ writeFileSync(
175
+ join(dir, "z-server.yaml"),
176
+ [
177
+ "kind: McpServer",
178
+ "metadata:",
179
+ " name: Tools",
180
+ " slug: tools",
181
+ "spec:",
182
+ " description: t",
183
+ " stdio:",
184
+ " command: npx",
185
+ "",
186
+ ].join("\n"),
187
+ );
188
+
189
+ const detect = detectTrack(dir);
190
+ const result = await applyDeclarative(detect, {
191
+ controller: controllerFn,
192
+ stigmer,
193
+ org: "acme",
194
+ info: () => {},
195
+ warn: () => {},
196
+ });
197
+
198
+ expect(result.status).toBe("success");
199
+ expect(events).toEqual(["mcpserver.apply", "mcpserver.connect", "agent.apply"]);
200
+ } finally {
201
+ rmSync(dir, { recursive: true, force: true });
202
+ }
203
+ });
126
204
  });
@@ -276,9 +276,9 @@ const DEFAULT_IGNORE_OPTIONS = { respectGitignore: true, extraIgnore: [] as stri
276
276
 
277
277
  /**
278
278
  * Reconcile a project's membership: push skills first (agents may reference
279
- * them), apply each resource through the shared apply core, collect references
280
- * to the member-eligible ones, run post-apply MCP discovery, then apply the
281
- * project with that exact member set so the server can reconcile by
279
+ * them), apply MCP servers and run capability discovery on them, apply the
280
+ * remaining resources, collect references to the member-eligible ones, then
281
+ * apply the project with that exact member set so the server can reconcile by
282
282
  * set-difference (orphan pruning is server-side; see S1 in commands/apply.ts).
283
283
  */
284
284
  export async function reconcileProjectMembers(
@@ -295,13 +295,14 @@ export async function reconcileProjectMembers(
295
295
  members.push(reference(deps.org, ApiResourceKind.skill, pushed.slug));
296
296
  }
297
297
 
298
- // Then each resource, collecting member references from the APPLIED result so
299
- // membership carries the server's authoritative slug. (This is the unified
300
- // policy: the declarative track used to read the pre-apply YAML slug, the Go
301
- // synthesis track read the applied result — converging on the applied result
302
- // is correct for both and matches what the backend actually stored.)
298
+ // Each resource is applied through the shared apply core, collecting member
299
+ // references from the APPLIED result so membership carries the server's
300
+ // authoritative slug. (This is the unified policy: the declarative track
301
+ // used to read the pre-apply YAML slug, the Go synthesis track read the
302
+ // applied result — converging on the applied result is correct for both and
303
+ // matches what the backend actually stored.)
303
304
  const appliedMcpServers: McpServer[] = [];
304
- for (const res of resources) {
305
+ const applyOne = async (res: ReconcileResource): Promise<void> => {
305
306
  const outcome = await applyMessage(deps.controller, res.handler, res.message, deps.org, false);
306
307
  if (outcome.warning !== undefined) deps.warn(outcome.warning);
307
308
  if (outcome.appliedMcpServer !== undefined) appliedMcpServers.push(outcome.appliedMcpServer);
@@ -309,9 +310,25 @@ export async function reconcileProjectMembers(
309
310
  const slug = memberSlugOf(outcome.applied);
310
311
  if (slug) members.push(reference(deps.org, res.handler.kind, slug));
311
312
  }
312
- }
313
+ };
313
314
 
315
+ // MCP servers first, then capability discovery, then everything else — the
316
+ // dependency principle applied to capabilities, not just existence. The
317
+ // server validates agent enabled_tools against discovered capabilities at
318
+ // apply time (stigmer/stigmer#402), and the backend's own post-apply
319
+ // connect is asynchronous; discovering here means agents in this apply
320
+ // validate against the toolset this apply just shipped, not the previous
321
+ // generation's (which would falsely reject e.g. a seedpack upgrade that
322
+ // adds a tool and enables it in the same pass). Discovery stays
323
+ // best-effort: a failed connect warns, capabilities stay stale, and the
324
+ // dependent apply surfaces an actionable error listing last-known tools.
325
+ for (const res of resources) {
326
+ if (res.handler.kind === ApiResourceKind.mcp_server) await applyOne(res);
327
+ }
314
328
  await discoverAppliedMcpServers(deps.stigmer, appliedMcpServers, deps.org, deps.info);
329
+ for (const res of resources) {
330
+ if (res.handler.kind !== ApiResourceKind.mcp_server) await applyOne(res);
331
+ }
315
332
 
316
333
  injectOrg(project, deps.org);
317
334
  if (project.spec === undefined) project.spec = create(ProjectSpecSchema, {});
@@ -24,6 +24,7 @@
24
24
 
25
25
  import type { DescMessage, DescService, Message } from "@bufbuild/protobuf";
26
26
  import type { Client } from "@connectrpc/connect";
27
+ import type { UpdateVisibilityInput } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
27
28
  import { type Session, SessionSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
28
29
  import { SessionCommandController } from "@stigmer/protos/ai/stigmer/agentic/session/v1/command_pb";
29
30
  import {
@@ -54,6 +55,14 @@ export interface ApplyHandler {
54
55
  readonly applyOrder: number;
55
56
  /** Drive the controller's `apply` RPC with the full resource message. */
56
57
  apply(controller: ControllerFn, message: Message): Promise<Message>;
58
+ /**
59
+ * Drive the controller's `updateVisibility` RPC — the only door for
60
+ * visibility changes (plain updates preserve stored visibility, oss#573).
61
+ * Present exactly when the kind has the RPC; the apply core follows up
62
+ * through it when a manifest-declared level differs from the stored one.
63
+ * Manifest kinds inherit the binding from the SDK registry.
64
+ */
65
+ updateVisibility?(controller: ControllerFn, input: UpdateVisibilityInput): Promise<Message>;
57
66
  }
58
67
 
59
68
  // The SDK registry's applyOrder values end at schedule = 12; the extras slot
@@ -72,6 +81,7 @@ const CLI_EXTRA_HANDLERS: readonly ApplyHandler[] = [
72
81
  schema: WorkflowInstanceSchema,
73
82
  applyOrder: 13,
74
83
  apply: (c, m) => c(WorkflowInstanceCommandController).apply(m as WorkflowInstance),
84
+ updateVisibility: (c, i) => c(WorkflowInstanceCommandController).updateVisibility(i),
75
85
  },
76
86
  {
77
87
  kind: ApiResourceKind.session,