@seat-mesh/core 0.1.18 → 0.1.23
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/dist/chatroom/agent-id.d.ts +6 -0
- package/dist/chatroom/agent-id.d.ts.map +1 -1
- package/dist/chatroom/agent-id.js +23 -4
- package/dist/chatroom/agent-id.js.map +1 -1
- package/dist/chatroom/checkback-hint.d.ts +12 -2
- package/dist/chatroom/checkback-hint.d.ts.map +1 -1
- package/dist/chatroom/checkback-hint.js +65 -31
- package/dist/chatroom/checkback-hint.js.map +1 -1
- package/dist/chatroom/checkback-hint.test.js +18 -1
- package/dist/chatroom/checkback-hint.test.js.map +1 -1
- package/dist/chatroom/comms-checkback.d.ts +3 -0
- package/dist/chatroom/comms-checkback.d.ts.map +1 -1
- package/dist/chatroom/comms-checkback.js +19 -1
- package/dist/chatroom/comms-checkback.js.map +1 -1
- package/dist/chatroom/inbox-client.d.ts +2 -0
- package/dist/chatroom/inbox-client.d.ts.map +1 -1
- package/dist/chatroom/inbox-client.js +45 -0
- package/dist/chatroom/inbox-client.js.map +1 -1
- package/dist/chatroom/read-state.d.ts +2 -0
- package/dist/chatroom/read-state.d.ts.map +1 -1
- package/dist/chatroom/read-state.js +10 -0
- package/dist/chatroom/read-state.js.map +1 -1
- package/dist/chatroom/room.d.ts +2 -0
- package/dist/chatroom/room.d.ts.map +1 -1
- package/dist/chatroom/room.js +30 -2
- package/dist/chatroom/room.js.map +1 -1
- package/dist/chatroom/room.test.js +33 -8
- package/dist/chatroom/room.test.js.map +1 -1
- package/dist/comms/envelope.d.ts +2 -2
- package/dist/contracts/agent-apply.d.ts +176 -0
- package/dist/contracts/agent-apply.d.ts.map +1 -0
- package/dist/contracts/agent-apply.js +296 -0
- package/dist/contracts/agent-apply.js.map +1 -0
- package/dist/contracts/agent-apply.test.d.ts +2 -0
- package/dist/contracts/agent-apply.test.d.ts.map +1 -0
- package/dist/contracts/agent-apply.test.js +103 -0
- package/dist/contracts/agent-apply.test.js.map +1 -0
- package/dist/contracts/balance-contract.test.d.ts +2 -0
- package/dist/contracts/balance-contract.test.d.ts.map +1 -0
- package/dist/contracts/balance-contract.test.js +38 -0
- package/dist/contracts/balance-contract.test.js.map +1 -0
- package/dist/contracts/balance.d.ts +36 -0
- package/dist/contracts/balance.d.ts.map +1 -0
- package/dist/contracts/balance.js +37 -0
- package/dist/contracts/balance.js.map +1 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/stack.d.ts +1 -1
- package/dist/layout/stack.d.ts.map +1 -1
- package/dist/layout/stack.js +3 -2
- package/dist/layout/stack.js.map +1 -1
- package/dist/messages/cli-hints.d.ts +13 -0
- package/dist/messages/cli-hints.d.ts.map +1 -0
- package/dist/messages/cli-hints.js +22 -0
- package/dist/messages/cli-hints.js.map +1 -0
- package/dist/messages/mesh-copy.d.ts +88 -0
- package/dist/messages/mesh-copy.d.ts.map +1 -0
- package/dist/messages/mesh-copy.js +154 -0
- package/dist/messages/mesh-copy.js.map +1 -0
- package/dist/messages/mesh-copy.test.d.ts +2 -0
- package/dist/messages/mesh-copy.test.d.ts.map +1 -0
- package/dist/messages/mesh-copy.test.js +47 -0
- package/dist/messages/mesh-copy.test.js.map +1 -0
- package/dist/messages/mesh-inbox-intent.d.ts +12 -0
- package/dist/messages/mesh-inbox-intent.d.ts.map +1 -0
- package/dist/messages/mesh-inbox-intent.js +61 -0
- package/dist/messages/mesh-inbox-intent.js.map +1 -0
- package/dist/messages/mesh-inbox-intent.test.d.ts +2 -0
- package/dist/messages/mesh-inbox-intent.test.d.ts.map +1 -0
- package/dist/messages/mesh-inbox-intent.test.js +18 -0
- package/dist/messages/mesh-inbox-intent.test.js.map +1 -0
- package/dist/paths-manifest.test.js +1 -0
- package/dist/paths-manifest.test.js.map +1 -1
- package/dist/profile-edit.d.ts +26 -0
- package/dist/profile-edit.d.ts.map +1 -0
- package/dist/profile-edit.js +87 -0
- package/dist/profile-edit.js.map +1 -0
- package/dist/profile-edit.test.d.ts +2 -0
- package/dist/profile-edit.test.d.ts.map +1 -0
- package/dist/profile-edit.test.js +111 -0
- package/dist/profile-edit.test.js.map +1 -0
- package/dist/profile.d.ts +0 -1
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +6 -4
- package/dist/profile.js.map +1 -1
- package/dist/providers/types.d.ts +8 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/role-index.d.ts +25 -2
- package/dist/role-index.d.ts.map +1 -1
- package/dist/role-index.js +98 -16
- package/dist/role-index.js.map +1 -1
- package/dist/role-index.test.js +42 -1
- package/dist/role-index.test.js.map +1 -1
- package/dist/schema/agents.d.ts +886 -141
- package/dist/schema/agents.d.ts.map +1 -1
- package/dist/schema/agents.js +34 -7
- package/dist/schema/agents.js.map +1 -1
- package/dist/schema/layout-manager2.test.js +1 -1
- package/dist/schema/layout-manager2.test.js.map +1 -1
- package/dist/schema/layout.d.ts +63 -62
- package/dist/schema/layout.d.ts.map +1 -1
- package/dist/schema/layout.js +33 -13
- package/dist/schema/layout.js.map +1 -1
- package/dist/schema/profile.d.ts +105 -132
- package/dist/schema/profile.d.ts.map +1 -1
- package/dist/schema/profile.js +8 -7
- package/dist/schema/profile.js.map +1 -1
- package/dist/schema/seat-kind.d.ts +43 -0
- package/dist/schema/seat-kind.d.ts.map +1 -0
- package/dist/schema/seat-kind.js +102 -0
- package/dist/schema/seat-kind.js.map +1 -0
- package/dist/schema/seat-kind.test.d.ts +2 -0
- package/dist/schema/seat-kind.test.d.ts.map +1 -0
- package/dist/schema/seat-kind.test.js +62 -0
- package/dist/schema/seat-kind.test.js.map +1 -0
- package/dist/ux/defaults.d.ts.map +1 -1
- package/dist/ux/defaults.js +6 -7
- package/dist/ux/defaults.js.map +1 -1
- package/dist/ux/evaluate.d.ts.map +1 -1
- package/dist/ux/evaluate.js +6 -3
- package/dist/ux/evaluate.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC"}
|
package/dist/layout/stack.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BaseColumn, MeshLayout } from "../schema/layout.js";
|
|
2
|
-
/** Manager
|
|
2
|
+
/** Manager-kind columns from layout (any ids; not a manager-N enum). */
|
|
3
3
|
export declare function effectiveManagerStack(layout: MeshLayout): BaseColumn[];
|
|
4
4
|
export declare function stackIncludes(layout: MeshLayout, role: BaseColumn): boolean;
|
|
5
5
|
//# sourceMappingURL=stack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../src/layout/stack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../src/layout/stack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGlE,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE,CAEtE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAE3E"}
|
package/dist/layout/stack.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { managerColumnIds } from "../schema/seat-kind.js";
|
|
2
|
+
/** Manager-kind columns from layout (any ids; not a manager-N enum). */
|
|
2
3
|
export function effectiveManagerStack(layout) {
|
|
3
|
-
return layout
|
|
4
|
+
return managerColumnIds(layout);
|
|
4
5
|
}
|
|
5
6
|
export function stackIncludes(layout, role) {
|
|
6
7
|
return effectiveManagerStack(layout).includes(role);
|
package/dist/layout/stack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../src/layout/stack.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../src/layout/stack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACtD,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAkB,EAAE,IAAgB;IAChE,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** User-facing CLI strings — no workspace wrappers, no operator names. */
|
|
2
|
+
export declare const SEATMESH_BIN = "seatmesh";
|
|
3
|
+
/** zsign consumer profile from repo root — agents use this, not ./sm.sh */
|
|
4
|
+
export declare const SEATMESH_ZSIGN_PROFILE = "seatmesh --profile .sm";
|
|
5
|
+
/** Monorepo dev when global binary is stale: npx --prefix services/seat-mesh --no seatmesh -- --profile .sm … */
|
|
6
|
+
export declare const SEATMESH_ZSIGN_NPX = "npx --prefix services/seat-mesh --no seatmesh -- --profile .sm";
|
|
7
|
+
/** Install: `npm install -g seatmesh@latest` or monorepo npx prefix (see SEATMESH_ZSIGN_NPX) */
|
|
8
|
+
export declare const SEATMESH_INSTALL_HINT = "npm install -g seatmesh@latest (dev: npx --prefix services/seat-mesh --no seatmesh -- \u2026)";
|
|
9
|
+
export declare function seatmeshCmd(sub: string): string;
|
|
10
|
+
export declare function seatmeshInboxRestart(): string;
|
|
11
|
+
export declare function seatmeshWithProfile(cmd: string): string;
|
|
12
|
+
export declare function seatmeshInboxDown(port: number): string;
|
|
13
|
+
//# sourceMappingURL=cli-hints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-hints.d.ts","sourceRoot":"","sources":["../../src/messages/cli-hints.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,eAAO,MAAM,YAAY,aAAa,CAAC;AAEvC,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D,iHAAiH;AACjH,eAAO,MAAM,kBAAkB,mEACmC,CAAC;AAEnE,gGAAgG;AAChG,eAAO,MAAM,qBAAqB,mGAC2D,CAAC;AAE9F,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** User-facing CLI strings — no workspace wrappers, no operator names. */
|
|
2
|
+
export const SEATMESH_BIN = "seatmesh";
|
|
3
|
+
/** zsign consumer profile from repo root — agents use this, not ./sm.sh */
|
|
4
|
+
export const SEATMESH_ZSIGN_PROFILE = "seatmesh --profile .sm";
|
|
5
|
+
/** Monorepo dev when global binary is stale: npx --prefix services/seat-mesh --no seatmesh -- --profile .sm … */
|
|
6
|
+
export const SEATMESH_ZSIGN_NPX = "npx --prefix services/seat-mesh --no seatmesh -- --profile .sm";
|
|
7
|
+
/** Install: `npm install -g seatmesh@latest` or monorepo npx prefix (see SEATMESH_ZSIGN_NPX) */
|
|
8
|
+
export const SEATMESH_INSTALL_HINT = "npm install -g seatmesh@latest (dev: npx --prefix services/seat-mesh --no seatmesh -- …)";
|
|
9
|
+
export function seatmeshCmd(sub) {
|
|
10
|
+
const s = sub.trim();
|
|
11
|
+
return s ? `${SEATMESH_ZSIGN_PROFILE} ${s}` : SEATMESH_ZSIGN_PROFILE;
|
|
12
|
+
}
|
|
13
|
+
export function seatmeshInboxRestart() {
|
|
14
|
+
return seatmeshCmd("inbox restart");
|
|
15
|
+
}
|
|
16
|
+
export function seatmeshWithProfile(cmd) {
|
|
17
|
+
return `${cmd} (pass --profile <dotdir> when not in the project tree)`;
|
|
18
|
+
}
|
|
19
|
+
export function seatmeshInboxDown(port) {
|
|
20
|
+
return `inbox down on :${port} — run: ${seatmeshInboxRestart()}`;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=cli-hints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-hints.js","sourceRoot":"","sources":["../../src/messages/cli-hints.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEvC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAE/D,iHAAiH;AACjH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,gEAAgE,CAAC;AAEnE,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAChC,2FAA2F,CAAC;AAE9F,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,sBAAsB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,WAAW,CAAC,eAAe,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,GAAG,GAAG,0DAA0D,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,kBAAkB,IAAI,WAAW,oBAAoB,EAAE,EAAE,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical user-facing inject / supervise copy for seat-mesh (single source).
|
|
3
|
+
* Daemon + secretary + CLI templates import from here — do not duplicate prose elsewhere.
|
|
4
|
+
* Never paste patterns.md or role file lists into a pane inject.
|
|
5
|
+
*/
|
|
6
|
+
/** Always-on dots point here. .sm/roles is whoami-only — not loaded every turn. */
|
|
7
|
+
export declare const AGENT_PROMPT: {
|
|
8
|
+
readonly constsFile: "services/seat-mesh/packages/core/src/messages/mesh-copy.ts";
|
|
9
|
+
readonly nowFile: "~/.config/zsign/MESH-NOW.md";
|
|
10
|
+
readonly durableFile: "~/.config/zsign/MESH-DURABLE.md";
|
|
11
|
+
readonly noPatternsInInject: "never paste patterns.md into an inject";
|
|
12
|
+
};
|
|
13
|
+
/** Required prefix on every inbox-daemon inject (SUPERVISE, BALANCE, Check:, peer drain). */
|
|
14
|
+
export declare const MESH_INBOX_TAG = "[mesh-inbox]";
|
|
15
|
+
export declare const MESH_INBOX_ROOM_TAG = "[mesh-inbox-room]";
|
|
16
|
+
export declare const MESH_SECRETARY_PREFIX = "[mesh-secretary] ";
|
|
17
|
+
export declare const BALANCE_CHECKBACK: {
|
|
18
|
+
readonly balanceLeadTickExpect: "balance tick — pull work from main lead; nudge idle balancee with open TASKS; update BALANCE-LAST";
|
|
19
|
+
readonly balanceStatusExpect: "BALANCE-STATUS — rebalance or pull from manager if needed";
|
|
20
|
+
};
|
|
21
|
+
export declare const SUPERVISE_CHECKBACK: {
|
|
22
|
+
readonly managerNudgeExpect: "manager idle — complete open TASKS.md checkboxes";
|
|
23
|
+
readonly secretarySuperviseExpect: "supervise all manager columns — nudge idle lead on open TASKS; ignore stale mini DIGEST";
|
|
24
|
+
readonly meshWatchExpect: "mesh MINI-DONE / health change / STALE thought-only minis";
|
|
25
|
+
/** After daemon STATUS inject — poll-later; not an inbox row. */
|
|
26
|
+
readonly statusExpect: "SUPERVISE-STATUS — next open TASK or Mark OPEN";
|
|
27
|
+
};
|
|
28
|
+
export type CoordLeadRole = string;
|
|
29
|
+
export declare function seatFocusTasksPath(role: CoordLeadRole): string;
|
|
30
|
+
/** Daemon CONTINUE inject when a coord lead pane is idle. */
|
|
31
|
+
export declare function meshInboxContinueLead(role: CoordLeadRole): string;
|
|
32
|
+
/** Mechanical STATUS posted by the daemon to every manager-kind lead. */
|
|
33
|
+
export declare function formatSuperviseStatusLine(leads: Array<{
|
|
34
|
+
id: string;
|
|
35
|
+
mark: string;
|
|
36
|
+
open: number;
|
|
37
|
+
}>): string;
|
|
38
|
+
export declare function meshInboxSuperviseStatus(line: string): string;
|
|
39
|
+
/** Ledger / fan-out / PEER drain: supervise STATUS must not rich-inject the manager lead. */
|
|
40
|
+
export declare function isSuperviseStatusBroadcast(kind: string | undefined, body: string): boolean;
|
|
41
|
+
/** One-line mechanical balance STATUS (main lead + balancees). */
|
|
42
|
+
export declare function formatBalanceStatusLine(opts: {
|
|
43
|
+
mainLeadId: string;
|
|
44
|
+
mainMark: string;
|
|
45
|
+
mainOpen: number;
|
|
46
|
+
balanceeParts: string[];
|
|
47
|
+
}): string;
|
|
48
|
+
export declare function meshInboxBalanceStatus(line: string): string;
|
|
49
|
+
/** Balance lead tick inject — best-effort; daemon already posted room STATUS + auto-assign. */
|
|
50
|
+
export declare function meshInboxBalanceLeadTick(): string;
|
|
51
|
+
export declare function balanceLeadBrief(opts: {
|
|
52
|
+
interval: string;
|
|
53
|
+
balancees: string[];
|
|
54
|
+
}): string;
|
|
55
|
+
/** Secretary SUPERVISE tick inject — one pane per interval; do not spam manager. */
|
|
56
|
+
export declare function meshInboxSuperviseSecretaryTick(): string;
|
|
57
|
+
/** Prefix for formatMeshSteeringInject / manager digest blocks. */
|
|
58
|
+
export declare function meshInboxDigestBlock(digestText: string): string;
|
|
59
|
+
export declare function meshInboxDigestIncomplete(opts: {
|
|
60
|
+
done: number;
|
|
61
|
+
total: number;
|
|
62
|
+
openIds: number[];
|
|
63
|
+
}): string;
|
|
64
|
+
export declare function secretaryDigestPrompt(digestText: string): string;
|
|
65
|
+
/** Inject body for seatmesh assign — hub already written to FOCUS/TASKS. */
|
|
66
|
+
export declare function assignPrompt(target: string, text: string): string;
|
|
67
|
+
/** First inject on every fresh launch / switch / restart. Agent runs whoami itself. */
|
|
68
|
+
export declare function freshSummonWhoamiPrompt(role?: string): string;
|
|
69
|
+
/** Restart / first-paint brief — keep short so OpenCode does not enter Shell with a novel. */
|
|
70
|
+
export declare function secretaryColdStartBrief(): string;
|
|
71
|
+
/** One-shot brief pasted to secretary when supervise arms. */
|
|
72
|
+
export declare function secretarySuperviseBrief(opts: {
|
|
73
|
+
managerPane: string;
|
|
74
|
+
interval: string;
|
|
75
|
+
extraPanes?: Array<{
|
|
76
|
+
id: string;
|
|
77
|
+
paneId: string;
|
|
78
|
+
}>;
|
|
79
|
+
}): string;
|
|
80
|
+
/** Room verify tail suffix (FOCUS/TASKS hub). */
|
|
81
|
+
export declare const ROOM_VERIFY_CONTINUE_HUB = "(no chat reply \u2014 continue FOCUS/TASKS hub)";
|
|
82
|
+
/**
|
|
83
|
+
* Drop mesh-owned inject/banner lines before composer/limit scoring.
|
|
84
|
+
* Leftover `OC-LIMIT:` / `[mesh-inbox]` after a CLI type-switch must not
|
|
85
|
+
* count as a live provider limit.
|
|
86
|
+
*/
|
|
87
|
+
export declare function stripMeshOwnedLines(tail: string): string;
|
|
88
|
+
//# sourceMappingURL=mesh-copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-copy.d.ts","sourceRoot":"","sources":["../../src/messages/mesh-copy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,mFAAmF;AACnF,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,6FAA6F;AAC7F,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAC7C,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,eAAO,MAAM,iBAAiB;;;CAIpB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;IAK9B,iEAAiE;;CAEzD,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAE9D;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAMjE;AAED,yEAAyE;AACzE,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACvD,MAAM,CAER;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,6FAA6F;AAC7F,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ1F;AAED,kEAAkE;AAClE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,MAAM,CAIT;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,+FAA+F;AAC/F,wBAAgB,wBAAwB,IAAI,MAAM,CAMjD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,CAOxF;AAED,oFAAoF;AACpF,wBAAgB,+BAA+B,IAAI,MAAM,CAWxD;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,MAAM,CAMT;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,IAAI,MAAM,CAOhD;AAED,8DAA8D;AAC9D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD,GAAG,MAAM,CAUT;AAED,iDAAiD;AACjD,eAAO,MAAM,wBAAwB,oDACS,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWxD"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical user-facing inject / supervise copy for seat-mesh (single source).
|
|
3
|
+
* Daemon + secretary + CLI templates import from here — do not duplicate prose elsewhere.
|
|
4
|
+
* Never paste patterns.md or role file lists into a pane inject.
|
|
5
|
+
*/
|
|
6
|
+
import { seatmeshCmd } from "./cli-hints.js";
|
|
7
|
+
/** Always-on dots point here. .sm/roles is whoami-only — not loaded every turn. */
|
|
8
|
+
export const AGENT_PROMPT = {
|
|
9
|
+
constsFile: "services/seat-mesh/packages/core/src/messages/mesh-copy.ts",
|
|
10
|
+
nowFile: "~/.config/zsign/MESH-NOW.md",
|
|
11
|
+
durableFile: "~/.config/zsign/MESH-DURABLE.md",
|
|
12
|
+
noPatternsInInject: "never paste patterns.md into an inject",
|
|
13
|
+
};
|
|
14
|
+
/** Required prefix on every inbox-daemon inject (SUPERVISE, BALANCE, Check:, peer drain). */
|
|
15
|
+
export const MESH_INBOX_TAG = "[mesh-inbox]";
|
|
16
|
+
export const MESH_INBOX_ROOM_TAG = "[mesh-inbox-room]";
|
|
17
|
+
export const MESH_SECRETARY_PREFIX = "[mesh-secretary] ";
|
|
18
|
+
export const BALANCE_CHECKBACK = {
|
|
19
|
+
balanceLeadTickExpect: "balance tick — pull work from main lead; nudge idle balancee with open TASKS; update BALANCE-LAST",
|
|
20
|
+
balanceStatusExpect: "BALANCE-STATUS — rebalance or pull from manager if needed",
|
|
21
|
+
};
|
|
22
|
+
export const SUPERVISE_CHECKBACK = {
|
|
23
|
+
managerNudgeExpect: "manager idle — complete open TASKS.md checkboxes",
|
|
24
|
+
secretarySuperviseExpect: "supervise all manager columns — nudge idle lead on open TASKS; ignore stale mini DIGEST",
|
|
25
|
+
meshWatchExpect: "mesh MINI-DONE / health change / STALE thought-only minis",
|
|
26
|
+
/** After daemon STATUS inject — poll-later; not an inbox row. */
|
|
27
|
+
statusExpect: "SUPERVISE-STATUS — next open TASK or Mark OPEN",
|
|
28
|
+
};
|
|
29
|
+
export function seatFocusTasksPath(role) {
|
|
30
|
+
return `seats/${role}`;
|
|
31
|
+
}
|
|
32
|
+
/** Daemon CONTINUE inject when a coord lead pane is idle. */
|
|
33
|
+
export function meshInboxContinueLead(role) {
|
|
34
|
+
const seat = seatFocusTasksPath(role);
|
|
35
|
+
return (`${MESH_INBOX_TAG} CONTINUE: read ${seat}/FOCUS.md + ${seat}/TASKS.md + tasks/seat-mesh/TODO.md; ` +
|
|
36
|
+
"work the next open TASK checkbox (no operator yes/continue); Mark OPEN only when session TASKS are clear");
|
|
37
|
+
}
|
|
38
|
+
/** Mechanical STATUS posted by the daemon to every manager-kind lead. */
|
|
39
|
+
export function formatSuperviseStatusLine(leads) {
|
|
40
|
+
return leads.map((l) => `${l.id} ${l.mark} ${l.open} open`).join(" | ");
|
|
41
|
+
}
|
|
42
|
+
export function meshInboxSuperviseStatus(line) {
|
|
43
|
+
return `${MESH_INBOX_TAG} SUPERVISE-STATUS: ${line}`;
|
|
44
|
+
}
|
|
45
|
+
/** Ledger / fan-out / PEER drain: supervise STATUS must not rich-inject the manager lead. */
|
|
46
|
+
export function isSuperviseStatusBroadcast(kind, body) {
|
|
47
|
+
if (kind === "status")
|
|
48
|
+
return true;
|
|
49
|
+
const t = body.trim();
|
|
50
|
+
if (/^STATUS\b/i.test(t))
|
|
51
|
+
return true;
|
|
52
|
+
if (/SUPERVISE-STATUS\b/i.test(t))
|
|
53
|
+
return true;
|
|
54
|
+
if (/\[mesh-inbox-room\][^\n]*\|\s*status\b/i.test(t))
|
|
55
|
+
return true;
|
|
56
|
+
if (/\nSTATUS\b/i.test(t))
|
|
57
|
+
return true;
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
/** One-line mechanical balance STATUS (main lead + balancees). */
|
|
61
|
+
export function formatBalanceStatusLine(opts) {
|
|
62
|
+
const tail = opts.balanceeParts.length > 0 ? opts.balanceeParts.join(" | ") : "(no balancees)";
|
|
63
|
+
return `${opts.mainLeadId} ${opts.mainMark} ${opts.mainOpen} open || ${tail}`;
|
|
64
|
+
}
|
|
65
|
+
export function meshInboxBalanceStatus(line) {
|
|
66
|
+
return `${MESH_INBOX_TAG} BALANCE-STATUS: ${line}`;
|
|
67
|
+
}
|
|
68
|
+
/** Balance lead tick inject — best-effort; daemon already posted room STATUS + auto-assign. */
|
|
69
|
+
export function meshInboxBalanceLeadTick() {
|
|
70
|
+
return (`${MESH_INBOX_TAG} BALANCE: Daemon tick wrote BALANCE-LAST + room STATUS + auto-assign when pull applies. ` +
|
|
71
|
+
"Read the balance-lead seat BALANCE-LAST.md and managers/balance rooms; execute assigned TASK — no manual peer pull. " +
|
|
72
|
+
`One-shot METHOD: \`${seatmeshCmd("balance run")}\`. Off: \`${seatmeshCmd("balance off")}\`.`);
|
|
73
|
+
}
|
|
74
|
+
export function balanceLeadBrief(opts) {
|
|
75
|
+
const list = opts.balancees.join(", ") || "(none)";
|
|
76
|
+
return (`BALANCE ON interval=${opts.interval} balancees=${list}. ` +
|
|
77
|
+
"Every tick: BALANCE-LAST + room STATUS + auto-assign on pull (daemon METHOD). " +
|
|
78
|
+
`\`${seatmeshCmd("balance run")}\` for one tick. Off: \`${seatmeshCmd("balance off")}\``);
|
|
79
|
+
}
|
|
80
|
+
/** Secretary SUPERVISE tick inject — one pane per interval; do not spam manager. */
|
|
81
|
+
export function meshInboxSuperviseSecretaryTick() {
|
|
82
|
+
return (`${MESH_INBOX_TAG} SUPERVISE: ${seatmeshCmd("contexts")}. Seats are .sm/seats/<column-id> ` +
|
|
83
|
+
"(not tasks/agent-seats). Read .sm/seats/secretary/SUPERVISE-LAST.md; " +
|
|
84
|
+
"compare TASKS/FOCUS/room PROG/minis. Room STATUS at most once per supervise interval unless " +
|
|
85
|
+
`material change — ALWAYS \`${seatmeshCmd('room say -r managers --kind status "..."')}\` (the --kind flag ` +
|
|
86
|
+
"is required: coordinator panes get the full message body pasted in unless it's tagged status, " +
|
|
87
|
+
"which floods them on every tick). Peer nudge leads only when no progress since last snapshot " +
|
|
88
|
+
"(not every drain). Idle+open TASK -> one CONTINUE. Update SUPERVISE-LAST.md after tick. " +
|
|
89
|
+
"No shell scripts.");
|
|
90
|
+
}
|
|
91
|
+
/** Prefix for formatMeshSteeringInject / manager digest blocks. */
|
|
92
|
+
export function meshInboxDigestBlock(digestText) {
|
|
93
|
+
return `${MESH_INBOX_TAG} DIGEST: ${digestText}`;
|
|
94
|
+
}
|
|
95
|
+
export function meshInboxDigestIncomplete(opts) {
|
|
96
|
+
const open = opts.openIds.join(",") || "none";
|
|
97
|
+
return (`${MESH_INBOX_TAG} DIGEST INCOMPLETE: ${opts.done}/${opts.total} open=[${open}] — ` +
|
|
98
|
+
seatmeshCmd("secretary collect --nudge"));
|
|
99
|
+
}
|
|
100
|
+
export function secretaryDigestPrompt(digestText) {
|
|
101
|
+
return `SECRETARY-DIGEST (mechanical — do not trust chat "all done"):\n${digestText}`;
|
|
102
|
+
}
|
|
103
|
+
/** Inject body for seatmesh assign — hub already written to FOCUS/TASKS. */
|
|
104
|
+
export function assignPrompt(target, text) {
|
|
105
|
+
return (`ASSIGN ${target}. Hub is your FOCUS NOW (written by ${seatmeshCmd(`assign ${target} …`)} — do not wait for a hand-edit). ` +
|
|
106
|
+
`First: ${seatmeshCmd("whoami")}. Then: ${text.trim()}`);
|
|
107
|
+
}
|
|
108
|
+
/** First inject on every fresh launch / switch / restart. Agent runs whoami itself. */
|
|
109
|
+
export function freshSummonWhoamiPrompt(role) {
|
|
110
|
+
const who = role ? ` You are ${role}.` : "";
|
|
111
|
+
return (`FRESH SUMMON.${who} First action: run ${seatmeshCmd("whoami")} (no flags). ` +
|
|
112
|
+
"That dump is your role, seat files, FOCUS, TASKS, and hub. Then do that hub. " +
|
|
113
|
+
"A later peer is a task — you already know the seat. Do not ask the operator who you are.");
|
|
114
|
+
}
|
|
115
|
+
/** Restart / first-paint brief — keep short so OpenCode does not enter Shell with a novel. */
|
|
116
|
+
export function secretaryColdStartBrief() {
|
|
117
|
+
return (`${freshSummonWhoamiPrompt("SECRETARY")} ` +
|
|
118
|
+
"Seats=.sm/seats/<column-id> (every profile base column). " +
|
|
119
|
+
`Tick: ${seatmeshCmd("contexts")}; if a lead is idle with open TASKS, ${seatmeshCmd("peer <lead> CONTINUE one checkbox")}. ` +
|
|
120
|
+
"Never write or run a long shell script. Never peer --direct. mesh-watch OFF.");
|
|
121
|
+
}
|
|
122
|
+
/** One-shot brief pasted to secretary when supervise arms. */
|
|
123
|
+
export function secretarySuperviseBrief(opts) {
|
|
124
|
+
const extras = (opts.extraPanes ?? []).map((e) => `${e.id}=${e.paneId}`).join("+");
|
|
125
|
+
const paneList = [opts.managerPane, extras].filter(Boolean).join("+");
|
|
126
|
+
return (`SUPERVISE ON interval=${opts.interval} panes=${paneList}. ` +
|
|
127
|
+
"Every tick: contexts + lead TASKS + minis; room STATUS at most once per interval unless change. " +
|
|
128
|
+
"Compare .sm/seats/secretary/SUPERVISE-LAST.md — no progress -> peer nudge (not spam). " +
|
|
129
|
+
`Idle lead with open TASKS -> ${seatmeshCmd("peer CONTINUE one checkbox")}. ` +
|
|
130
|
+
"Never write or run a long shell script. Never peer --direct.");
|
|
131
|
+
}
|
|
132
|
+
/** Room verify tail suffix (FOCUS/TASKS hub). */
|
|
133
|
+
export const ROOM_VERIFY_CONTINUE_HUB = "(no chat reply — continue FOCUS/TASKS hub)";
|
|
134
|
+
/**
|
|
135
|
+
* Drop mesh-owned inject/banner lines before composer/limit scoring.
|
|
136
|
+
* Leftover `OC-LIMIT:` / `[mesh-inbox]` after a CLI type-switch must not
|
|
137
|
+
* count as a live provider limit.
|
|
138
|
+
*/
|
|
139
|
+
export function stripMeshOwnedLines(tail) {
|
|
140
|
+
return tail
|
|
141
|
+
.split("\n")
|
|
142
|
+
.filter((line) => {
|
|
143
|
+
const t = line.trim();
|
|
144
|
+
if (!t)
|
|
145
|
+
return true;
|
|
146
|
+
if (/\[mesh-inbox/.test(t))
|
|
147
|
+
return false;
|
|
148
|
+
if (/\bOC-LIMIT:/.test(t))
|
|
149
|
+
return false;
|
|
150
|
+
return true;
|
|
151
|
+
})
|
|
152
|
+
.join("\n");
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=mesh-copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-copy.js","sourceRoot":"","sources":["../../src/messages/mesh-copy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-copy.test.d.ts","sourceRoot":"","sources":["../../src/messages/mesh-copy.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { formatSuperviseStatusLine, isSuperviseStatusBroadcast, meshInboxSuperviseStatus, MESH_INBOX_TAG, stripMeshOwnedLines, } from "./mesh-copy.js";
|
|
3
|
+
describe("supervise status copy", () => {
|
|
4
|
+
it("formats a one-line lead STATUS from the profile lead list", () => {
|
|
5
|
+
expect(formatSuperviseStatusLine([
|
|
6
|
+
{ id: "manager", mark: "BUSY", open: 0 },
|
|
7
|
+
{ id: "lead-west", mark: "BUSY", open: 1 },
|
|
8
|
+
])).toBe("manager BUSY 0 open | lead-west BUSY 1 open");
|
|
9
|
+
});
|
|
10
|
+
it("includes every extra manager-kind lead", () => {
|
|
11
|
+
expect(formatSuperviseStatusLine([
|
|
12
|
+
{ id: "manager", mark: "BUSY", open: 0 },
|
|
13
|
+
{ id: "lead-west", mark: "OPEN", open: 0 },
|
|
14
|
+
{ id: "lead-east", mark: "BUSY", open: 2 },
|
|
15
|
+
])).toBe("manager BUSY 0 open | lead-west OPEN 0 open | lead-east BUSY 2 open");
|
|
16
|
+
});
|
|
17
|
+
it("prefixes the daemon inject tag", () => {
|
|
18
|
+
const line = formatSuperviseStatusLine([
|
|
19
|
+
{ id: "manager", mark: "OPEN", open: 0 },
|
|
20
|
+
{ id: "lead-west", mark: "BLOCKED", open: 2 },
|
|
21
|
+
]);
|
|
22
|
+
expect(meshInboxSuperviseStatus(line)).toBe(`${MESH_INBOX_TAG} SUPERVISE-STATUS: manager OPEN 0 open | lead-west BLOCKED 2 open`);
|
|
23
|
+
});
|
|
24
|
+
it("detects STATUS tick / operator override / queued rich notify", () => {
|
|
25
|
+
expect(isSuperviseStatusBroadcast("status", "anything")).toBe(true);
|
|
26
|
+
expect(isSuperviseStatusBroadcast("msg", "STATUS tick: PROG since last=none")).toBe(true);
|
|
27
|
+
expect(isSuperviseStatusBroadcast("msg", "STATUS (operator override): DONE today")).toBe(true);
|
|
28
|
+
expect(isSuperviseStatusBroadcast("msg", "manager | [mesh-inbox-room] managers | secretary | msg (+7 more unseen)\nSTATUS tick: PROG")).toBe(true);
|
|
29
|
+
expect(isSuperviseStatusBroadcast("msg", "CLAIMED: slice")).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe("stripMeshOwnedLines", () => {
|
|
33
|
+
it("drops inbox injects and OC-LIMIT banner leftovers", () => {
|
|
34
|
+
const tail = [
|
|
35
|
+
"old output",
|
|
36
|
+
"[mesh-inbox] intent=limit-retry CONTINUE: resume",
|
|
37
|
+
"slot-3 | [mesh-inbox] OC-LIMIT:oc-limit leftover",
|
|
38
|
+
"Ask anything",
|
|
39
|
+
].join("\n");
|
|
40
|
+
const stripped = stripMeshOwnedLines(tail);
|
|
41
|
+
expect(stripped).toContain("old output");
|
|
42
|
+
expect(stripped).toContain("Ask anything");
|
|
43
|
+
expect(stripped).not.toMatch(/mesh-inbox/);
|
|
44
|
+
expect(stripped).not.toMatch(/OC-LIMIT:/);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=mesh-copy.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-copy.test.js","sourceRoot":"","sources":["../../src/messages/mesh-copy.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Machine tag on daemon injects so coord panes can filter (no faux conversation turn). */
|
|
2
|
+
export declare const MESH_INBOX_INTENTS: readonly ["supervise-tick", "checkback-verify", "background", "assign", "continue", "limit-retry", "status"];
|
|
3
|
+
export type MeshInboxIntent = (typeof MESH_INBOX_INTENTS)[number];
|
|
4
|
+
export declare function isMeshInboxIntent(s: string): s is MeshInboxIntent;
|
|
5
|
+
/** Prefix `[mesh-inbox] intent=<kind>` when not already stamped. */
|
|
6
|
+
export declare function formatMeshInboxStamp(body: string, intent?: MeshInboxIntent): string;
|
|
7
|
+
export declare function parseMeshInboxIntent(message: string): MeshInboxIntent | null;
|
|
8
|
+
/** Non-assign intents must not end with Reply: peer boilerplate. */
|
|
9
|
+
export declare function stripReplyPeerFooter(message: string): string;
|
|
10
|
+
/** When hub is closed, skip coord ACK/status spam (operator or lead sets lock). */
|
|
11
|
+
export declare function hubLockActive(workspace: string): boolean;
|
|
12
|
+
//# sourceMappingURL=mesh-inbox-intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-inbox-intent.d.ts","sourceRoot":"","sources":["../../src/messages/mesh-inbox-intent.ts"],"names":[],"mappings":"AAIA,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,8GAQrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,eAAe,CAEjE;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,CASnF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAK5E;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAYxD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { MESH_INBOX_TAG } from "./mesh-copy.js";
|
|
4
|
+
/** Machine tag on daemon injects so coord panes can filter (no faux conversation turn). */
|
|
5
|
+
export const MESH_INBOX_INTENTS = [
|
|
6
|
+
"supervise-tick",
|
|
7
|
+
"checkback-verify",
|
|
8
|
+
"background",
|
|
9
|
+
"assign",
|
|
10
|
+
"continue",
|
|
11
|
+
"limit-retry",
|
|
12
|
+
"status",
|
|
13
|
+
];
|
|
14
|
+
export function isMeshInboxIntent(s) {
|
|
15
|
+
return MESH_INBOX_INTENTS.includes(s);
|
|
16
|
+
}
|
|
17
|
+
/** Prefix `[mesh-inbox] intent=<kind>` when not already stamped. */
|
|
18
|
+
export function formatMeshInboxStamp(body, intent) {
|
|
19
|
+
const raw = body.trimStart();
|
|
20
|
+
if (!intent)
|
|
21
|
+
return body;
|
|
22
|
+
if (/\bintent=[a-z-]+\b/.test(raw))
|
|
23
|
+
return body;
|
|
24
|
+
if (raw.startsWith(MESH_INBOX_TAG)) {
|
|
25
|
+
const rest = raw.slice(MESH_INBOX_TAG.length).trimStart();
|
|
26
|
+
return `${MESH_INBOX_TAG} intent=${intent} ${rest}`;
|
|
27
|
+
}
|
|
28
|
+
return `${MESH_INBOX_TAG} intent=${intent} ${raw}`;
|
|
29
|
+
}
|
|
30
|
+
export function parseMeshInboxIntent(message) {
|
|
31
|
+
const m = message.match(/\[mesh-inbox\]\s+intent=([a-z-]+)/);
|
|
32
|
+
if (!m)
|
|
33
|
+
return null;
|
|
34
|
+
const id = m[1] ?? "";
|
|
35
|
+
return isMeshInboxIntent(id) ? id : null;
|
|
36
|
+
}
|
|
37
|
+
/** Non-assign intents must not end with Reply: peer boilerplate. */
|
|
38
|
+
export function stripReplyPeerFooter(message) {
|
|
39
|
+
return message
|
|
40
|
+
.replace(/\nSHELL \(required[^\n]*$/gm, "")
|
|
41
|
+
.replace(/\nReply: peer[^\n]*$/gm, "")
|
|
42
|
+
.replace(/\nReply: \.\/sm\.sh peer[^\n]*$/gm, "")
|
|
43
|
+
.replace(/\nReply: seatmesh[^\n]*$/gm, "")
|
|
44
|
+
.trimEnd();
|
|
45
|
+
}
|
|
46
|
+
/** When hub is closed, skip coord ACK/status spam (operator or lead sets lock). */
|
|
47
|
+
export function hubLockActive(workspace) {
|
|
48
|
+
const candidates = [
|
|
49
|
+
path.join(workspace, ".sm", "HUB.lock"),
|
|
50
|
+
path.join(workspace, "tasks", "seat-mesh", "HUB.lock"),
|
|
51
|
+
];
|
|
52
|
+
return candidates.some((p) => {
|
|
53
|
+
try {
|
|
54
|
+
return fs.existsSync(p);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=mesh-inbox-intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-inbox-intent.js","sourceRoot":"","sources":["../../src/messages/mesh-inbox-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,gBAAgB;IAChB,kBAAkB;IAClB,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,aAAa;IACb,QAAQ;CACA,CAAC;AAIX,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,OAAQ,kBAAwC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,MAAwB;IACzE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;QAC1D,OAAO,GAAG,cAAc,WAAW,MAAM,IAAI,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,GAAG,cAAc,WAAW,MAAM,IAAI,GAAG,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtB,OAAO,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,OAAO;SACX,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;SAC1C,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;SACrC,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;SAChD,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;SACzC,OAAO,EAAE,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;KACvD,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-inbox-intent.test.d.ts","sourceRoot":"","sources":["../../src/messages/mesh-inbox-intent.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { formatMeshInboxStamp, hubLockActive, parseMeshInboxIntent, stripReplyPeerFooter, } from "./mesh-inbox-intent.js";
|
|
3
|
+
describe("mesh-inbox-intent", () => {
|
|
4
|
+
it("stamps intent on mesh-inbox lines", () => {
|
|
5
|
+
expect(formatMeshInboxStamp("[mesh-inbox] Check: foo", "checkback-verify")).toBe("[mesh-inbox] intent=checkback-verify Check: foo");
|
|
6
|
+
});
|
|
7
|
+
it("parses intent", () => {
|
|
8
|
+
expect(parseMeshInboxIntent("[mesh-inbox] intent=continue CONTINUE: x")).toBe("continue");
|
|
9
|
+
});
|
|
10
|
+
it("strips Reply peer footer", () => {
|
|
11
|
+
const raw = "line\nReply: peer manager \"<msg>\"";
|
|
12
|
+
expect(stripReplyPeerFooter(raw)).toBe("line");
|
|
13
|
+
});
|
|
14
|
+
it("hubLockActive is false when no lock file", () => {
|
|
15
|
+
expect(hubLockActive("/tmp/no-such-workspace-zsign-test")).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=mesh-inbox-intent.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-inbox-intent.test.js","sourceRoot":"","sources":["../../src/messages/mesh-inbox-intent.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,oBAAoB,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAC9E,iDAAiD,CAClD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,oBAAoB,CAAC,0CAA0C,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,GAAG,GAAG,qCAAqC,CAAC;QAClD,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -41,6 +41,7 @@ describe("paths-manifest", () => {
|
|
|
41
41
|
expect(p.daemonDir).toBe(path.join(sm, "runtime", "daemon"));
|
|
42
42
|
expect(p.sqlitePath).toBe(path.join(sm, "runtime", "mesh.sqlite"));
|
|
43
43
|
expect(p.chatRoomsRoot).toBe(path.join(sm, "chat-rooms"));
|
|
44
|
+
expect(p.meshAgentsJson).toBe(path.join(sm, "mesh-agents.json"));
|
|
44
45
|
expect(resolveHarnessPath(loaded, "seats")).toBe(path.join(sm, "seats"));
|
|
45
46
|
});
|
|
46
47
|
it("writes paths.json", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths-manifest.test.js","sourceRoot":"","sources":["../src/paths-manifest.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paths-manifest.test.js","sourceRoot":"","sources":["../src/paths-manifest.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAI7B,SAAS,UAAU,CAAC,UAAkB,EAAE,SAAiB;IACvD,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,EAAE,KAAK,EAAE,SAAkB,EAAE;QACpC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAiB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,EAAE;QAChF,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,WAAoB;YAC3B,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;SACX;QACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QACxD,KAAK,EAAE,EAAE,UAAU,EAAE,uBAAuB,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAClF,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;QACvB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACzB,SAAS,EAAE,CAAC,OAAO,CAAC;KACN,CAAC;IACjB,OAAO;QACL,OAAO;QACP,UAAU;QACV,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC;QACtD,SAAS;QACT,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,aAAa;KAC3B,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAA2B,CAAC;QAC/E,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { LoadedProfile } from "./profile.js";
|
|
2
|
+
/**
|
|
3
|
+
* Programmatic edits to `mesh.config.yaml`'s `layout.base.columns` (+ the optional
|
|
4
|
+
* per-column `cli` / `humanCoTyped` maps). N managers/secretaries are config, not
|
|
5
|
+
* an enum (see docs/ARCHITECTURE.md "Coordinator columns") -- these helpers are the
|
|
6
|
+
* one supported way to add/remove a column so nobody hand-edits the yaml array or
|
|
7
|
+
* cargo-cults a per-instance `seats.dirs` entry that `seatDirSegment` already
|
|
8
|
+
* defaults to identity for.
|
|
9
|
+
*/
|
|
10
|
+
export interface AddColumnOptions {
|
|
11
|
+
/** CLI provider override for this column (default: agent, or opencode for secretary-kind). */
|
|
12
|
+
cli?: string;
|
|
13
|
+
/** Insert immediately after this existing column id (default: append at end). */
|
|
14
|
+
after?: string;
|
|
15
|
+
/** Add to `layout.base.humanCoTyped` (daemon queues injects while the human types). */
|
|
16
|
+
coTyped?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ColumnEditResult {
|
|
19
|
+
id: string;
|
|
20
|
+
columns: string[];
|
|
21
|
+
profilePath: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function addBaseColumn(loaded: LoadedProfile, rawId: string, opts?: AddColumnOptions): ColumnEditResult;
|
|
24
|
+
export declare function removeBaseColumn(loaded: LoadedProfile, rawId: string): ColumnEditResult;
|
|
25
|
+
export declare function listBaseColumns(loaded: LoadedProfile): string[];
|
|
26
|
+
//# sourceMappingURL=profile-edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-edit.d.ts","sourceRoot":"","sources":["../src/profile-edit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD;;;;;;;GAOG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,8FAA8F;IAC9F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAwBD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,gBAAqB,GAC1B,gBAAgB,CAmClB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAyBvF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAG/D"}
|