@agimon-ai/po-ui 0.0.0-alpha.2 → 0.0.0-alpha.21
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/LICENSE +149 -21
- package/README.md +1 -1
- package/dist/apiContracts.cjs +1 -1
- package/dist/apiContracts.cjs.map +1 -1
- package/dist/apiContracts.d.mts +1 -1
- package/dist/apiContracts.mjs +1 -1
- package/dist/apiContracts.mjs.map +1 -1
- package/dist/config.d.mts +2 -2
- package/dist/config.mjs +1 -2
- package/dist/extensionName.cjs +66 -16
- package/dist/extensionName.cjs.map +1 -1
- package/dist/extensionName.d.mts +13 -1
- package/dist/extensionName.d.mts.map +1 -1
- package/dist/extensionName.mjs +64 -16
- package/dist/extensionName.mjs.map +1 -1
- package/dist/extensions/mcp-ui.mjs.map +1 -1
- package/dist/extensions/mcp.cjs +3 -3
- package/dist/extensions/mcp.cjs.map +1 -1
- package/dist/extensions/mcp.d.mts +1 -1
- package/dist/extensions/mcp.mjs +4 -4
- package/dist/extensions/mcp.mjs.map +1 -1
- package/dist/extensions/server.cjs +7 -7
- package/dist/extensions/server.cjs.map +1 -1
- package/dist/extensions/server.d.mts +2 -2
- package/dist/extensions/server.d.mts.map +1 -1
- package/dist/extensions/server.mjs +7 -7
- package/dist/extensions/server.mjs.map +1 -1
- package/dist/extensions/web.mjs +11 -11
- package/dist/extensions/web.mjs.map +1 -1
- package/dist/footer.d.mts +2 -2
- package/dist/footer.mjs +1 -2
- package/dist/{harnessMetadata-Dw9Rb1nW.cjs → harnessMetadata-B3mBGrS3.cjs} +4 -4
- package/dist/harnessMetadata-B3mBGrS3.cjs.map +1 -0
- package/dist/{harnessMetadata-CzsdGAxL.d.mts → harnessMetadata-BzMgOB0W.d.mts} +4 -4
- package/dist/harnessMetadata-BzMgOB0W.d.mts.map +1 -0
- package/dist/{harnessMetadata-DkMSJutN.mjs → harnessMetadata-Ccv_j7WP.mjs} +3 -3
- package/dist/harnessMetadata-Ccv_j7WP.mjs.map +1 -0
- package/dist/harnessMetadata.cjs +2 -2
- package/dist/harnessMetadata.d.mts +2 -2
- package/dist/harnessMetadata.mjs +1 -2
- package/dist/{index-Bx49wmE7.d.mts → index-2GW2dj0I.d.mts} +9 -9
- package/dist/{index-Bx49wmE7.d.mts.map → index-2GW2dj0I.d.mts.map} +1 -1
- package/dist/{index-Dpzvl-vg.d.mts → index-DFSkSBBh.d.mts} +19 -11
- package/dist/index-DFSkSBBh.d.mts.map +1 -0
- package/dist/index.cjs +6 -6
- package/dist/index.d.mts +8 -8
- package/dist/index.mjs +5 -5
- package/dist/leader.d.mts +2 -2
- package/dist/leaderRegistry.cjs +2 -2
- package/dist/leaderRegistry.cjs.map +1 -1
- package/dist/leaderRegistry.d.mts +15 -15
- package/dist/leaderRegistry.d.mts.map +1 -1
- package/dist/leaderRegistry.mjs +2 -2
- package/dist/leaderRegistry.mjs.map +1 -1
- package/dist/logSinkTelemetry.cjs +1 -1
- package/dist/logSinkTelemetry.d.mts +1 -1
- package/dist/logSinkTelemetry.mjs +1 -2
- package/dist/skills.cjs +8 -8
- package/dist/skills.d.mts +2 -2
- package/dist/skills.mjs +1 -2
- package/dist/{telemetry-DMR6cIT1.cjs → telemetry-EXlQc9s0.cjs} +8 -8
- package/dist/telemetry-EXlQc9s0.cjs.map +1 -0
- package/dist/{telemetry--EgKB9ei.mjs → telemetry-RiFqd0cg.mjs} +9 -9
- package/dist/telemetry-RiFqd0cg.mjs.map +1 -0
- package/dist/{theme-Byj_dBlT.mjs → theme-BX_hfErv.mjs} +60 -40
- package/dist/theme-BX_hfErv.mjs.map +1 -0
- package/dist/{theme-2wveit5V.cjs → theme-BfC_GGQ4.cjs} +66 -40
- package/dist/theme-BfC_GGQ4.cjs.map +1 -0
- package/dist/theme.cjs +2 -1
- package/dist/theme.d.mts +2 -2
- package/dist/theme.mjs +1 -2
- package/dist/toolInventory.mjs +1 -2
- package/dist/{uiState-G_Pso-5i.mjs → uiState-C7I5WcMl.mjs} +3 -3
- package/dist/uiState-C7I5WcMl.mjs.map +1 -0
- package/dist/{uiState-rUwgKslb.cjs → uiState-CCytmxyX.cjs} +4 -4
- package/dist/uiState-CCytmxyX.cjs.map +1 -0
- package/dist/{uiState-Binu4nUb.d.mts → uiState-DbjaVyxl.d.mts} +3 -3
- package/dist/{uiState-Binu4nUb.d.mts.map → uiState-DbjaVyxl.d.mts.map} +1 -1
- package/dist/uiState.cjs +2 -2
- package/dist/uiState.d.mts +2 -2
- package/dist/uiState.mjs +1 -2
- package/package.json +19 -19
- package/dist/harnessMetadata-CzsdGAxL.d.mts.map +0 -1
- package/dist/harnessMetadata-DkMSJutN.mjs.map +0 -1
- package/dist/harnessMetadata-Dw9Rb1nW.cjs.map +0 -1
- package/dist/index-Dpzvl-vg.d.mts.map +0 -1
- package/dist/telemetry--EgKB9ei.mjs.map +0 -1
- package/dist/telemetry-DMR6cIT1.cjs.map +0 -1
- package/dist/theme-2wveit5V.cjs.map +0 -1
- package/dist/theme-Byj_dBlT.mjs.map +0 -1
- package/dist/uiState-G_Pso-5i.mjs.map +0 -1
- package/dist/uiState-rUwgKslb.cjs.map +0 -1
package/dist/theme.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
export { DEFAULT_THEME, DEFAULT_THEME_NAME, agentIdentityColor, allocateAgentIdentityColor, writeDefaultTheme };
|
|
1
|
+
import { a as DEFAULT_THEME, i as writeDefaultTheme, n as allocateAgentIdentityColor, o as DEFAULT_THEME_NAME, r as writeDefaultThemeFile, t as agentIdentityColor } from "./index-DFSkSBBh.mjs";
|
|
2
|
+
export { DEFAULT_THEME, DEFAULT_THEME_NAME, agentIdentityColor, allocateAgentIdentityColor, writeDefaultTheme, writeDefaultThemeFile };
|
package/dist/theme.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { DEFAULT_THEME, DEFAULT_THEME_NAME, agentIdentityColor, allocateAgentIdentityColor, writeDefaultTheme };
|
|
1
|
+
export { a as DEFAULT_THEME, o as DEFAULT_THEME_NAME, t as agentIdentityColor, n as allocateAgentIdentityColor, i as writeDefaultTheme, r as writeDefaultThemeFile } from "./theme-BX_hfErv.mjs";
|
package/dist/toolInventory.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { buildToolSources, tokensForSource, tokensForTool };
|
|
1
|
+
export { buildToolSources, tokensForSource, tokensForTool } from "@agimon-ai/po-core/toolInventory";
|
|
@@ -24,7 +24,7 @@ function projectMinorModeRecords(records) {
|
|
|
24
24
|
...state.color ? { color: state.color } : {}
|
|
25
25
|
})).sort((left, right) => left.order - right.order || left.source.localeCompare(right.source) || left.id.localeCompare(right.id));
|
|
26
26
|
}
|
|
27
|
-
var
|
|
27
|
+
var PoUiState = class {
|
|
28
28
|
snapshot = INACTIVE_SNAPSHOT;
|
|
29
29
|
modes = [];
|
|
30
30
|
listeners = /* @__PURE__ */ new Set();
|
|
@@ -52,6 +52,6 @@ var DoomUiState = class {
|
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
54
|
//#endregion
|
|
55
|
-
export { projectMinorModeRecords as n,
|
|
55
|
+
export { projectMinorModeRecords as n, PoUiState as t };
|
|
56
56
|
|
|
57
|
-
//# sourceMappingURL=uiState-
|
|
57
|
+
//# sourceMappingURL=uiState-C7I5WcMl.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uiState-C7I5WcMl.mjs","names":[],"sources":["../src/models/uiState.ts"],"sourcesContent":["import type { LeaderTone } from '@agimon-ai/po-core/leader';\nimport type { MinorModeRecord, ModeTextColor } from '@agimon-ai/po-minor-mode';\n\nexport interface LeaderOption {\n key: string;\n label: string;\n detail?: string;\n tone?: LeaderTone;\n}\n\nexport interface LeaderSnapshot {\n active: boolean;\n prefix: string[];\n label: string;\n options: LeaderOption[];\n rootOptions?: LeaderOption[];\n}\n\nexport interface UiMinorModeStatus {\n source: string;\n id: string;\n label: string;\n detail?: string;\n color?: ModeTextColor;\n order: number;\n}\n\ntype StateListener = (snapshot: LeaderSnapshot) => void;\n\nconst INACTIVE_SNAPSHOT: LeaderSnapshot = {\n active: false,\n prefix: [],\n label: '',\n options: [],\n};\n\nfunction cloneSnapshot(snapshot: LeaderSnapshot): LeaderSnapshot {\n return {\n active: snapshot.active,\n prefix: [...snapshot.prefix],\n label: snapshot.label,\n options: snapshot.options.map((option) => ({ ...option })),\n ...(snapshot.rootOptions ? { rootOptions: snapshot.rootOptions.map((option) => ({ ...option })) } : {}),\n };\n}\n\nexport function projectMinorModeRecords(records: readonly MinorModeRecord[]): UiMinorModeStatus[] {\n return records\n .filter(({ state }) => state.activation !== 'inactive')\n .map(({ descriptor, state }) => ({\n source: descriptor.source,\n id: descriptor.id,\n label: descriptor.label,\n order: descriptor.order,\n ...(state.detail ? { detail: state.detail } : {}),\n ...(state.color ? { color: state.color } : {}),\n }))\n .sort(\n (left, right) =>\n left.order - right.order || left.source.localeCompare(right.source) || left.id.localeCompare(right.id),\n );\n}\n\nexport class PoUiState {\n private snapshot = INACTIVE_SNAPSHOT;\n private modes: readonly UiMinorModeStatus[] = [];\n private readonly listeners = new Set<StateListener>();\n\n getSnapshot(): LeaderSnapshot {\n return cloneSnapshot(this.snapshot);\n }\n\n getModes(): readonly UiMinorModeStatus[] {\n return this.modes;\n }\n\n setModes(modes: readonly UiMinorModeStatus[]): void {\n this.modes = modes.map((mode) => ({ ...mode }));\n for (const listener of this.listeners) listener(this.getSnapshot());\n }\n\n setLeader(snapshot: LeaderSnapshot): void {\n this.snapshot = cloneSnapshot(snapshot);\n for (const listener of this.listeners) listener(this.getSnapshot());\n }\n\n reset(): void {\n this.modes = [];\n this.setLeader(INACTIVE_SNAPSHOT);\n }\n\n subscribe(listener: StateListener): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n}\n"],"mappings":";AA6BA,MAAM,oBAAoC;CACxC,QAAQ;CACR,QAAQ,CAAC;CACT,OAAO;CACP,SAAS,CAAC;AACZ;AAEA,SAAS,cAAc,UAA0C;CAC/D,OAAO;EACL,QAAQ,SAAS;EACjB,QAAQ,CAAC,GAAG,SAAS,MAAM;EAC3B,OAAO,SAAS;EAChB,SAAS,SAAS,QAAQ,KAAK,YAAY,EAAE,GAAG,OAAO,EAAE;EACzD,GAAI,SAAS,cAAc,EAAE,aAAa,SAAS,YAAY,KAAK,YAAY,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC;CACvG;AACF;AAEA,SAAgB,wBAAwB,SAA0D;CAChG,OAAO,QACJ,QAAQ,EAAE,YAAY,MAAM,eAAe,UAAU,CAAC,CACtD,KAAK,EAAE,YAAY,aAAa;EAC/B,QAAQ,WAAW;EACnB,IAAI,WAAW;EACf,OAAO,WAAW;EAClB,OAAO,WAAW;EAClB,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;EAC/C,GAAI,MAAM,QAAQ,EAAE,OAAO,MAAM,MAAM,IAAI,CAAC;CAC9C,EAAE,CAAC,CACF,MACE,MAAM,UACL,KAAK,QAAQ,MAAM,SAAS,KAAK,OAAO,cAAc,MAAM,MAAM,KAAK,KAAK,GAAG,cAAc,MAAM,EAAE,CACzG;AACJ;AAEA,IAAa,YAAb,MAAuB;CACrB,WAAmB;CACnB,QAA8C,CAAC;CAC/C,4BAA6B,IAAI,IAAmB;CAEpD,cAA8B;EAC5B,OAAO,cAAc,KAAK,QAAQ;CACpC;CAEA,WAAyC;EACvC,OAAO,KAAK;CACd;CAEA,SAAS,OAA2C;EAClD,KAAK,QAAQ,MAAM,KAAK,UAAU,EAAE,GAAG,KAAK,EAAE;EAC9C,KAAK,MAAM,YAAY,KAAK,WAAW,SAAS,KAAK,YAAY,CAAC;CACpE;CAEA,UAAU,UAAgC;EACxC,KAAK,WAAW,cAAc,QAAQ;EACtC,KAAK,MAAM,YAAY,KAAK,WAAW,SAAS,KAAK,YAAY,CAAC;CACpE;CAEA,QAAc;EACZ,KAAK,QAAQ,CAAC;EACd,KAAK,UAAU,iBAAiB;CAClC;CAEA,UAAU,UAAqC;EAC7C,KAAK,UAAU,IAAI,QAAQ;EAC3B,aAAa,KAAK,UAAU,OAAO,QAAQ;CAC7C;AACF"}
|
|
@@ -24,7 +24,7 @@ function projectMinorModeRecords(records) {
|
|
|
24
24
|
...state.color ? { color: state.color } : {}
|
|
25
25
|
})).sort((left, right) => left.order - right.order || left.source.localeCompare(right.source) || left.id.localeCompare(right.id));
|
|
26
26
|
}
|
|
27
|
-
var
|
|
27
|
+
var PoUiState = class {
|
|
28
28
|
snapshot = INACTIVE_SNAPSHOT;
|
|
29
29
|
modes = [];
|
|
30
30
|
listeners = /* @__PURE__ */ new Set();
|
|
@@ -52,10 +52,10 @@ var DoomUiState = class {
|
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
54
|
//#endregion
|
|
55
|
-
Object.defineProperty(exports, "
|
|
55
|
+
Object.defineProperty(exports, "PoUiState", {
|
|
56
56
|
enumerable: true,
|
|
57
57
|
get: function() {
|
|
58
|
-
return
|
|
58
|
+
return PoUiState;
|
|
59
59
|
}
|
|
60
60
|
});
|
|
61
61
|
Object.defineProperty(exports, "projectMinorModeRecords", {
|
|
@@ -65,4 +65,4 @@ Object.defineProperty(exports, "projectMinorModeRecords", {
|
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
67
|
|
|
68
|
-
//# sourceMappingURL=uiState-
|
|
68
|
+
//# sourceMappingURL=uiState-CCytmxyX.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uiState-CCytmxyX.cjs","names":[],"sources":["../src/models/uiState.ts"],"sourcesContent":["import type { LeaderTone } from '@agimon-ai/po-core/leader';\nimport type { MinorModeRecord, ModeTextColor } from '@agimon-ai/po-minor-mode';\n\nexport interface LeaderOption {\n key: string;\n label: string;\n detail?: string;\n tone?: LeaderTone;\n}\n\nexport interface LeaderSnapshot {\n active: boolean;\n prefix: string[];\n label: string;\n options: LeaderOption[];\n rootOptions?: LeaderOption[];\n}\n\nexport interface UiMinorModeStatus {\n source: string;\n id: string;\n label: string;\n detail?: string;\n color?: ModeTextColor;\n order: number;\n}\n\ntype StateListener = (snapshot: LeaderSnapshot) => void;\n\nconst INACTIVE_SNAPSHOT: LeaderSnapshot = {\n active: false,\n prefix: [],\n label: '',\n options: [],\n};\n\nfunction cloneSnapshot(snapshot: LeaderSnapshot): LeaderSnapshot {\n return {\n active: snapshot.active,\n prefix: [...snapshot.prefix],\n label: snapshot.label,\n options: snapshot.options.map((option) => ({ ...option })),\n ...(snapshot.rootOptions ? { rootOptions: snapshot.rootOptions.map((option) => ({ ...option })) } : {}),\n };\n}\n\nexport function projectMinorModeRecords(records: readonly MinorModeRecord[]): UiMinorModeStatus[] {\n return records\n .filter(({ state }) => state.activation !== 'inactive')\n .map(({ descriptor, state }) => ({\n source: descriptor.source,\n id: descriptor.id,\n label: descriptor.label,\n order: descriptor.order,\n ...(state.detail ? { detail: state.detail } : {}),\n ...(state.color ? { color: state.color } : {}),\n }))\n .sort(\n (left, right) =>\n left.order - right.order || left.source.localeCompare(right.source) || left.id.localeCompare(right.id),\n );\n}\n\nexport class PoUiState {\n private snapshot = INACTIVE_SNAPSHOT;\n private modes: readonly UiMinorModeStatus[] = [];\n private readonly listeners = new Set<StateListener>();\n\n getSnapshot(): LeaderSnapshot {\n return cloneSnapshot(this.snapshot);\n }\n\n getModes(): readonly UiMinorModeStatus[] {\n return this.modes;\n }\n\n setModes(modes: readonly UiMinorModeStatus[]): void {\n this.modes = modes.map((mode) => ({ ...mode }));\n for (const listener of this.listeners) listener(this.getSnapshot());\n }\n\n setLeader(snapshot: LeaderSnapshot): void {\n this.snapshot = cloneSnapshot(snapshot);\n for (const listener of this.listeners) listener(this.getSnapshot());\n }\n\n reset(): void {\n this.modes = [];\n this.setLeader(INACTIVE_SNAPSHOT);\n }\n\n subscribe(listener: StateListener): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n}\n"],"mappings":";AA6BA,MAAM,oBAAoC;CACxC,QAAQ;CACR,QAAQ,CAAC;CACT,OAAO;CACP,SAAS,CAAC;AACZ;AAEA,SAAS,cAAc,UAA0C;CAC/D,OAAO;EACL,QAAQ,SAAS;EACjB,QAAQ,CAAC,GAAG,SAAS,MAAM;EAC3B,OAAO,SAAS;EAChB,SAAS,SAAS,QAAQ,KAAK,YAAY,EAAE,GAAG,OAAO,EAAE;EACzD,GAAI,SAAS,cAAc,EAAE,aAAa,SAAS,YAAY,KAAK,YAAY,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC;CACvG;AACF;AAEA,SAAgB,wBAAwB,SAA0D;CAChG,OAAO,QACJ,QAAQ,EAAE,YAAY,MAAM,eAAe,UAAU,CAAC,CACtD,KAAK,EAAE,YAAY,aAAa;EAC/B,QAAQ,WAAW;EACnB,IAAI,WAAW;EACf,OAAO,WAAW;EAClB,OAAO,WAAW;EAClB,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;EAC/C,GAAI,MAAM,QAAQ,EAAE,OAAO,MAAM,MAAM,IAAI,CAAC;CAC9C,EAAE,CAAC,CACF,MACE,MAAM,UACL,KAAK,QAAQ,MAAM,SAAS,KAAK,OAAO,cAAc,MAAM,MAAM,KAAK,KAAK,GAAG,cAAc,MAAM,EAAE,CACzG;AACJ;AAEA,IAAa,YAAb,MAAuB;CACrB,WAAmB;CACnB,QAA8C,CAAC;CAC/C,4BAA6B,IAAI,IAAmB;CAEpD,cAA8B;EAC5B,OAAO,cAAc,KAAK,QAAQ;CACpC;CAEA,WAAyC;EACvC,OAAO,KAAK;CACd;CAEA,SAAS,OAA2C;EAClD,KAAK,QAAQ,MAAM,KAAK,UAAU,EAAE,GAAG,KAAK,EAAE;EAC9C,KAAK,MAAM,YAAY,KAAK,WAAW,SAAS,KAAK,YAAY,CAAC;CACpE;CAEA,UAAU,UAAgC;EACxC,KAAK,WAAW,cAAc,QAAQ;EACtC,KAAK,MAAM,YAAY,KAAK,WAAW,SAAS,KAAK,YAAY,CAAC;CACpE;CAEA,QAAc;EACZ,KAAK,QAAQ,CAAC;EACd,KAAK,UAAU,iBAAiB;CAClC;CAEA,UAAU,UAAqC;EAC7C,KAAK,UAAU,IAAI,QAAQ;EAC3B,aAAa,KAAK,UAAU,OAAO,QAAQ;CAC7C;AACF"}
|
|
@@ -24,7 +24,7 @@ interface UiMinorModeStatus {
|
|
|
24
24
|
}
|
|
25
25
|
type StateListener = (snapshot: LeaderSnapshot) => void;
|
|
26
26
|
declare function projectMinorModeRecords(records: readonly MinorModeRecord[]): UiMinorModeStatus[];
|
|
27
|
-
declare class
|
|
27
|
+
declare class PoUiState {
|
|
28
28
|
private snapshot;
|
|
29
29
|
private modes;
|
|
30
30
|
private readonly listeners;
|
|
@@ -36,5 +36,5 @@ declare class DoomUiState {
|
|
|
36
36
|
subscribe(listener: StateListener): () => void;
|
|
37
37
|
}
|
|
38
38
|
//#endregion
|
|
39
|
-
export { projectMinorModeRecords as a, UiMinorModeStatus as i,
|
|
40
|
-
//# sourceMappingURL=uiState-
|
|
39
|
+
export { projectMinorModeRecords as a, UiMinorModeStatus as i, LeaderSnapshot as n, PoUiState as r, LeaderOption as t };
|
|
40
|
+
//# sourceMappingURL=uiState-DbjaVyxl.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiState-
|
|
1
|
+
{"version":3,"file":"uiState-DbjaVyxl.d.mts","names":[],"sources":["../src/models/uiState.ts"],"mappings":";;;UAGiB;EACf;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA;EACA,SAAS;EACT,cAAc;;UAGC;EACf;EACA;EACA;EACA;EACA,QAAQ;EACR;;KAGG,iBAAiB,UAAU;iBAmBhB,wBAAwB,kBAAkB,oBAAoB;cAiBjE;UACH;UACA;mBACS;EAEjB,eAAe;EAIf,qBAAqB;EAIrB,SAAS,gBAAgB;EAKzB,UAAU,UAAU;EAKpB;EAKA,UAAU,UAAU"}
|
package/dist/uiState.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_uiState = require("./uiState-
|
|
3
|
-
exports.
|
|
2
|
+
const require_uiState = require("./uiState-CCytmxyX.cjs");
|
|
3
|
+
exports.PoUiState = require_uiState.PoUiState;
|
|
4
4
|
exports.projectMinorModeRecords = require_uiState.projectMinorModeRecords;
|
package/dist/uiState.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as projectMinorModeRecords, i as UiMinorModeStatus, n as
|
|
2
|
-
export {
|
|
1
|
+
import { a as projectMinorModeRecords, i as UiMinorModeStatus, n as LeaderSnapshot, r as PoUiState, t as LeaderOption } from "./uiState-DbjaVyxl.mjs";
|
|
2
|
+
export { type LeaderOption, type LeaderSnapshot, PoUiState, type UiMinorModeStatus, projectMinorModeRecords };
|
package/dist/uiState.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { DoomUiState, projectMinorModeRecords };
|
|
1
|
+
export { t as PoUiState, n as projectMinorModeRecords } from "./uiState-C7I5WcMl.mjs";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agimon-ai/po-ui",
|
|
3
|
-
"version": "0.0.0-alpha.
|
|
3
|
+
"version": "0.0.0-alpha.21",
|
|
4
4
|
"description": "Leader-key menus, themes, and TUI components for Po and Pi extensions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"bugs": {
|
|
19
19
|
"url": "https://github.com/AgiFlow/po/issues"
|
|
20
20
|
},
|
|
21
|
-
"license": "
|
|
21
|
+
"license": "BUSL-1.1",
|
|
22
22
|
"author": "Vuong Ngo",
|
|
23
23
|
"repository": {
|
|
24
24
|
"type": "git",
|
|
@@ -110,34 +110,34 @@
|
|
|
110
110
|
"access": "public"
|
|
111
111
|
},
|
|
112
112
|
"dependencies": {
|
|
113
|
-
"@agimon-ai/po-core": "0.0.0-alpha.
|
|
114
|
-
"@agimon-ai/po-hashline": "0.0.0-alpha.
|
|
115
|
-
"@agimon-ai/po-minor-mode": "0.0.0-alpha.
|
|
116
|
-
"@agimon-ai/po-telemetry": "0.0.0-alpha.
|
|
117
|
-
"@agimon-ai/po-web-components": "0.0.0-alpha.
|
|
118
|
-
"@deepseek-ai/cordis": "4.0.
|
|
113
|
+
"@agimon-ai/po-core": "0.0.0-alpha.21",
|
|
114
|
+
"@agimon-ai/po-hashline": "0.0.0-alpha.21",
|
|
115
|
+
"@agimon-ai/po-minor-mode": "0.0.0-alpha.21",
|
|
116
|
+
"@agimon-ai/po-telemetry": "0.0.0-alpha.21",
|
|
117
|
+
"@agimon-ai/po-web-components": "0.0.0-alpha.21",
|
|
118
|
+
"@deepseek-ai/cordis": "4.0.5",
|
|
119
119
|
"yaml": "2.9.1"
|
|
120
120
|
},
|
|
121
121
|
"devDependencies": {
|
|
122
|
-
"@agimon-ai/po-build": "0.0.0-alpha.
|
|
123
|
-
"@agimon-ai/po-core": "0.0.0-alpha.
|
|
124
|
-
"@agimon-ai/po-web-components": "0.0.0-alpha.
|
|
125
|
-
"@earendil-works/pi-coding-agent": "1.
|
|
122
|
+
"@agimon-ai/po-build": "0.0.0-alpha.21",
|
|
123
|
+
"@agimon-ai/po-core": "0.0.0-alpha.21",
|
|
124
|
+
"@agimon-ai/po-web-components": "0.0.0-alpha.21",
|
|
125
|
+
"@earendil-works/pi-coding-agent": "1.3.0",
|
|
126
126
|
"@tanstack/react-store": "0.11.2",
|
|
127
127
|
"@tanstack/store": "0.11.2",
|
|
128
|
-
"@types/node": "26.6.
|
|
128
|
+
"@types/node": "26.6.5",
|
|
129
129
|
"@types/react": "19.3.0",
|
|
130
|
-
"@vitest/coverage-v8": "5.0.
|
|
130
|
+
"@vitest/coverage-v8": "5.0.4",
|
|
131
131
|
"react": "19.3.0",
|
|
132
132
|
"react-dom": "19.3.0",
|
|
133
|
-
"tsdown": "0.23.
|
|
133
|
+
"tsdown": "0.23.1",
|
|
134
134
|
"typescript": "7.0.2",
|
|
135
|
-
"vitest": "5.0.
|
|
135
|
+
"vitest": "5.0.4"
|
|
136
136
|
},
|
|
137
137
|
"peerDependencies": {
|
|
138
|
-
"@agimon-ai/po-core": "0.0.0-alpha.
|
|
139
|
-
"@agimon-ai/po-web-components": "0.0.0-alpha.
|
|
140
|
-
"@earendil-works/pi-coding-agent": "1.
|
|
138
|
+
"@agimon-ai/po-core": "0.0.0-alpha.21",
|
|
139
|
+
"@agimon-ai/po-web-components": "0.0.0-alpha.21",
|
|
140
|
+
"@earendil-works/pi-coding-agent": "1.3.0"
|
|
141
141
|
},
|
|
142
142
|
"peerDependenciesMeta": {
|
|
143
143
|
"@agimon-ai/po-web-components": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"harnessMetadata-CzsdGAxL.d.mts","names":[],"sources":["../src/types/harnessMetadata.ts"],"mappings":";;;;;;;;UAUiB;EACf;;EAEA;EACA;;EAEA;EACA;;iBAYc,wBAAwB,cAAa,OAAO,aAA2B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"harnessMetadata-DkMSJutN.mjs","names":[],"sources":["../src/types/harnessMetadata.ts"],"sourcesContent":["/**\n * The slice of harness state the header renders.\n *\n * A projection of the store rather than its own reader. This used to\n * re-implement five of the state keys with its own list parser and its own\n * default mode, which is two definitions of one protocol to keep in step.\n */\n\nconst DEFAULT_MAJOR_MODE = 'copilot';\n\nexport interface DoomHarnessMetadata {\n root?: string;\n /** The one named major mode this session runs under. */\n majorMode: string;\n domains: string[];\n /** The layer components the major mode resolved to. */\n layers: string[];\n profile?: string;\n}\n\nfunction parseList(value: string | undefined): string[] {\n return value\n ? value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean)\n : [];\n}\n\nexport function readDoomHarnessMetadata(environment: NodeJS.ProcessEnv = process.env): DoomHarnessMetadata {\n return {\n root: environment.PO_ROOT,\n majorMode: environment.PO_MAJOR_MODE?.trim() || DEFAULT_MAJOR_MODE,\n domains: parseList(environment.PO_DOMAINS),\n layers: parseList(environment.PO_LAYERS),\n profile: environment.PO_PROFILE?.trim() || undefined,\n };\n}\n"],"mappings":";;;;;;;;AAQA,MAAM,qBAAqB;AAY3B,SAAS,UAAU,OAAqC;CACtD,OAAO,QACH,MACG,MAAM,GAAG,CAAC,CACV,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC,CAC1B,OAAO,OAAO,IACjB,CAAC;AACP;AAEA,SAAgB,wBAAwB,cAAiC,QAAQ,KAA0B;CACzG,OAAO;EACL,MAAM,YAAY;EAClB,WAAW,YAAY,eAAe,KAAK,KAAK;EAChD,SAAS,UAAU,YAAY,UAAU;EACzC,QAAQ,UAAU,YAAY,SAAS;EACvC,SAAS,YAAY,YAAY,KAAK,KAAK,KAAA;CAC7C;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"harnessMetadata-Dw9Rb1nW.cjs","names":[],"sources":["../src/types/harnessMetadata.ts"],"sourcesContent":["/**\n * The slice of harness state the header renders.\n *\n * A projection of the store rather than its own reader. This used to\n * re-implement five of the state keys with its own list parser and its own\n * default mode, which is two definitions of one protocol to keep in step.\n */\n\nconst DEFAULT_MAJOR_MODE = 'copilot';\n\nexport interface DoomHarnessMetadata {\n root?: string;\n /** The one named major mode this session runs under. */\n majorMode: string;\n domains: string[];\n /** The layer components the major mode resolved to. */\n layers: string[];\n profile?: string;\n}\n\nfunction parseList(value: string | undefined): string[] {\n return value\n ? value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean)\n : [];\n}\n\nexport function readDoomHarnessMetadata(environment: NodeJS.ProcessEnv = process.env): DoomHarnessMetadata {\n return {\n root: environment.PO_ROOT,\n majorMode: environment.PO_MAJOR_MODE?.trim() || DEFAULT_MAJOR_MODE,\n domains: parseList(environment.PO_DOMAINS),\n layers: parseList(environment.PO_LAYERS),\n profile: environment.PO_PROFILE?.trim() || undefined,\n };\n}\n"],"mappings":";;;;;;;;AAQA,MAAM,qBAAqB;AAY3B,SAAS,UAAU,OAAqC;CACtD,OAAO,QACH,MACG,MAAM,GAAG,CAAC,CACV,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC,CAC1B,OAAO,OAAO,IACjB,CAAC;AACP;AAEA,SAAgB,wBAAwB,cAAiC,QAAQ,KAA0B;CACzG,OAAO;EACL,MAAM,YAAY;EAClB,WAAW,YAAY,eAAe,KAAK,KAAK;EAChD,SAAS,UAAU,YAAY,UAAU;EACzC,QAAQ,UAAU,YAAY,SAAS;EACvC,SAAS,YAAY,YAAY,KAAK,KAAK,KAAA;CAC7C;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Dpzvl-vg.d.mts","names":[],"sources":["../src/services/theme/index.ts"],"mappings":";;cAKa;;iBAqBG,mBAAmB,mBAAmB;;;;;;iBAStC,2BAA2B,kBAAkB,UAAU,YAAY,mBAAmB;cASzF;WACX;WAEA;WAGA;aACE;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aAEA;aACA;;WAEF;aACE;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aAEA;aACA;aACA;aACA;aACA;aACA;aACA;aAGA;aACA;aACA;aACA;aAEA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aAEA;aACA;aACA;aAEA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aAGA;aACA;aACA;aACA;aACA;aACA;aACA;aAEA;;WAEF;aACE;aACA;aACA;;;iBAIkB,kBAAkB,6BAA6B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry--EgKB9ei.mjs","names":[],"sources":["../src/services/telemetry/index.ts"],"sourcesContent":["import { createDoomTelemetry, type DoomTelemetry, type DoomTelemetryOptions } from '@agimon-ai/po-telemetry';\n\nconst SERVICE_NAME = 'po-ui';\nconst PACKAGE_NAME = '@agimon-ai/po-ui';\n\nexport const UI_EVENT = {\n leaderContributionRejected: 'doom_pi_ui.leader_contribution_rejected',\n leaderCommandUnavailable: 'doom_pi_ui.leader_command_unavailable',\n leaderActionUnavailable: 'doom_pi_ui.leader_action_unavailable',\n themeApplyFailed: 'doom_pi_ui.theme_apply_failed',\n shellInstalled: 'doom_pi_ui.shell_installed',\n eventLoopStalled: 'doom_pi_ui.event_loop_stalled',\n} as const;\n\nexport type UiEventName = (typeof UI_EVENT)[keyof typeof UI_EVENT];\nexport type UiEventAttributes = Record<string, string | number | boolean>;\n\nexport interface UiTelemetryOptions {\n cwd?: string;\n workspaceRoot?: string;\n env?: NodeJS.ProcessEnv;\n telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;\n warn?: (message: string) => void;\n}\n\nexport interface UiTelemetry {\n recordError(event: UiEventName, error: unknown, attributes?: UiEventAttributes): Promise<void>;\n recordWarning(event: UiEventName, error: unknown, attributes?: UiEventAttributes): Promise<void>;\n recordEvent(event: UiEventName, attributes?: UiEventAttributes): Promise<void>;\n flush(): Promise<void>;\n shutdown(): Promise<void>;\n}\n\nexport function createUiTelemetry(options: UiTelemetryOptions = {}): UiTelemetry {\n const telemetry: DoomTelemetry = createDoomTelemetry({\n serviceName: SERVICE_NAME,\n packageName: PACKAGE_NAME,\n cwd: options.cwd,\n workspaceRoot: options.workspaceRoot,\n env: options.env,\n telemetryFactory: options.telemetryFactory,\n warn: options.warn,\n enableLogs: true,\n enableTraces: true,\n });\n return {\n recordError: (event, error, attributes) => telemetry.recordError(event, error, attributes),\n recordWarning: (event, error, attributes) => telemetry.recordWarning(event, error, attributes),\n recordEvent: (event, attributes) => telemetry.recordEvent(event, attributes),\n flush: () => telemetry.flush(),\n shutdown: () => telemetry.shutdown(),\n };\n}\n"],"mappings":";;AAEA,MAAM,eAAe;AACrB,MAAM,eAAe;AAErB,MAAa,WAAW;CACtB,4BAA4B;CAC5B,0BAA0B;CAC1B,yBAAyB;CACzB,kBAAkB;CAClB,gBAAgB;CAChB,kBAAkB;AACpB;AAqBA,SAAgB,kBAAkB,UAA8B,CAAC,GAAgB;CAC/E,MAAM,YAA2B,oBAAoB;EACnD,aAAa;EACb,aAAa;EACb,KAAK,QAAQ;EACb,eAAe,QAAQ;EACvB,KAAK,QAAQ;EACb,kBAAkB,QAAQ;EAC1B,MAAM,QAAQ;EACd,YAAY;EACZ,cAAc;CAChB,CAAC;CACD,OAAO;EACL,cAAc,OAAO,OAAO,eAAe,UAAU,YAAY,OAAO,OAAO,UAAU;EACzF,gBAAgB,OAAO,OAAO,eAAe,UAAU,cAAc,OAAO,OAAO,UAAU;EAC7F,cAAc,OAAO,eAAe,UAAU,YAAY,OAAO,UAAU;EAC3E,aAAa,UAAU,MAAM;EAC7B,gBAAgB,UAAU,SAAS;CACrC;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry-DMR6cIT1.cjs","names":["createDoomTelemetry"],"sources":["../src/services/telemetry/index.ts"],"sourcesContent":["import { createDoomTelemetry, type DoomTelemetry, type DoomTelemetryOptions } from '@agimon-ai/po-telemetry';\n\nconst SERVICE_NAME = 'po-ui';\nconst PACKAGE_NAME = '@agimon-ai/po-ui';\n\nexport const UI_EVENT = {\n leaderContributionRejected: 'doom_pi_ui.leader_contribution_rejected',\n leaderCommandUnavailable: 'doom_pi_ui.leader_command_unavailable',\n leaderActionUnavailable: 'doom_pi_ui.leader_action_unavailable',\n themeApplyFailed: 'doom_pi_ui.theme_apply_failed',\n shellInstalled: 'doom_pi_ui.shell_installed',\n eventLoopStalled: 'doom_pi_ui.event_loop_stalled',\n} as const;\n\nexport type UiEventName = (typeof UI_EVENT)[keyof typeof UI_EVENT];\nexport type UiEventAttributes = Record<string, string | number | boolean>;\n\nexport interface UiTelemetryOptions {\n cwd?: string;\n workspaceRoot?: string;\n env?: NodeJS.ProcessEnv;\n telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;\n warn?: (message: string) => void;\n}\n\nexport interface UiTelemetry {\n recordError(event: UiEventName, error: unknown, attributes?: UiEventAttributes): Promise<void>;\n recordWarning(event: UiEventName, error: unknown, attributes?: UiEventAttributes): Promise<void>;\n recordEvent(event: UiEventName, attributes?: UiEventAttributes): Promise<void>;\n flush(): Promise<void>;\n shutdown(): Promise<void>;\n}\n\nexport function createUiTelemetry(options: UiTelemetryOptions = {}): UiTelemetry {\n const telemetry: DoomTelemetry = createDoomTelemetry({\n serviceName: SERVICE_NAME,\n packageName: PACKAGE_NAME,\n cwd: options.cwd,\n workspaceRoot: options.workspaceRoot,\n env: options.env,\n telemetryFactory: options.telemetryFactory,\n warn: options.warn,\n enableLogs: true,\n enableTraces: true,\n });\n return {\n recordError: (event, error, attributes) => telemetry.recordError(event, error, attributes),\n recordWarning: (event, error, attributes) => telemetry.recordWarning(event, error, attributes),\n recordEvent: (event, attributes) => telemetry.recordEvent(event, attributes),\n flush: () => telemetry.flush(),\n shutdown: () => telemetry.shutdown(),\n };\n}\n"],"mappings":";;AAEA,MAAM,eAAe;AACrB,MAAM,eAAe;AAErB,MAAa,WAAW;CACtB,4BAA4B;CAC5B,0BAA0B;CAC1B,yBAAyB;CACzB,kBAAkB;CAClB,gBAAgB;CAChB,kBAAkB;AACpB;AAqBA,SAAgB,kBAAkB,UAA8B,CAAC,GAAgB;CAC/E,MAAM,aAAA,GAA2BA,wBAAAA,oBAAAA,CAAoB;EACnD,aAAa;EACb,aAAa;EACb,KAAK,QAAQ;EACb,eAAe,QAAQ;EACvB,KAAK,QAAQ;EACb,kBAAkB,QAAQ;EAC1B,MAAM,QAAQ;EACd,YAAY;EACZ,cAAc;CAChB,CAAC;CACD,OAAO;EACL,cAAc,OAAO,OAAO,eAAe,UAAU,YAAY,OAAO,OAAO,UAAU;EACzF,gBAAgB,OAAO,OAAO,eAAe,UAAU,cAAc,OAAO,OAAO,UAAU;EAC7F,cAAc,OAAO,eAAe,UAAU,YAAY,OAAO,UAAU;EAC3E,aAAa,UAAU,MAAM;EAC7B,gBAAgB,UAAU,SAAS;CACrC;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme-2wveit5V.cjs","names":["path","fs"],"sources":["../src/services/theme/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { FooterTextColor } from '@agimon-ai/po-core/footer';\n\nexport const DEFAULT_THEME_NAME = 'po-dark';\n\nconst AGENT_IDENTITY_COLORS = [\n 'accent',\n 'mdCode',\n 'toolDiffAdded',\n 'warning',\n 'mdHeading',\n 'syntaxNumber',\n] as const satisfies readonly FooterTextColor[];\n\nfunction agentIdentityColorIndex(identity: string): number {\n let hash = 2_166_136_261;\n for (const character of identity) {\n hash ^= character.charCodeAt(0);\n hash = Math.imul(hash, 16_777_619);\n }\n return (hash >>> 0) % AGENT_IDENTITY_COLORS.length;\n}\n\n/** Stable semantic color shared by every UI surface that identifies an agent run. */\nexport function agentIdentityColor(identity: string): FooterTextColor {\n return AGENT_IDENTITY_COLORS[agentIdentityColorIndex(identity)]!;\n}\n\n/**\n * Prefer the identity's stable color, then walk the palette to avoid reusing a\n * color already visible on the same surface. Once every color is occupied,\n * reuse the stable preference rather than changing existing assignments.\n */\nexport function allocateAgentIdentityColor(identity: string, occupied: ReadonlySet<FooterTextColor>): FooterTextColor {\n const preferredIndex = agentIdentityColorIndex(identity);\n for (let offset = 0; offset < AGENT_IDENTITY_COLORS.length; offset++) {\n const color = AGENT_IDENTITY_COLORS[(preferredIndex + offset) % AGENT_IDENTITY_COLORS.length]!;\n if (!occupied.has(color)) return color;\n }\n return AGENT_IDENTITY_COLORS[preferredIndex]!;\n}\n\nexport const DEFAULT_THEME = {\n $schema:\n 'https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json',\n name: DEFAULT_THEME_NAME,\n // Po Jade's quiet ink surfaces and green identity. Syntax colors retain\n // their meaning instead of making every operation a brand accent.\n vars: {\n bg: '#1c1c1c',\n bgAlt: '#171717',\n bgActive: '#2b2b2b',\n bgHover: '#2b2b2b',\n fg: '#dedede',\n fgAlt: '#b0b0b0',\n grey: '#343434',\n greyAlt: '#555555',\n blue: '#8cb5cc',\n darkBlue: '#284b64',\n cyan: '#8fc8c7',\n green: '#81cca3',\n lightGreen: '#a5d9b5',\n teal: '#8ec1ab',\n orange: '#d3ad83',\n red: '#e99185',\n violet: '#b0a0ce',\n magenta: '#c19aae',\n yellow: '#d6be82',\n lightYellow: '#e1cf9e',\n comment: '#a4a4a4',\n // Recessed diff bands retain readable syntax and quiet foreground text.\n diffAddedBg: '#152d20',\n diffRemovedBg: '#35201b',\n },\n colors: {\n accent: 'green',\n border: 'greyAlt',\n borderAccent: 'green',\n borderMuted: 'grey',\n success: 'green',\n error: 'red',\n warning: 'yellow',\n muted: 'fgAlt',\n dim: 'comment',\n text: 'fg',\n thinkingText: 'fgAlt',\n\n selectedBg: 'bgHover',\n userMessageBg: 'bgActive',\n userMessageText: 'fg',\n customMessageBg: '#292c2a',\n customMessageText: 'fg',\n customMessageLabel: 'green',\n toolPendingBg: 'bgAlt',\n // Doubles as the added/removed band behind a diff row, so it stays a wash\n // rather than a fill: syntax highlighting has to remain legible on top.\n toolSuccessBg: 'diffAddedBg',\n toolErrorBg: 'diffRemovedBg',\n toolTitle: 'green',\n toolOutput: 'fg',\n\n mdHeading: 'magenta',\n mdLink: 'blue',\n mdLinkUrl: 'comment',\n mdCode: 'cyan',\n mdCodeBlock: 'lightYellow',\n mdCodeBlockBorder: 'greyAlt',\n mdQuote: 'fgAlt',\n mdQuoteBorder: 'greyAlt',\n mdHr: 'greyAlt',\n mdListBullet: 'green',\n\n toolDiffAdded: 'lightGreen',\n toolDiffRemoved: 'red',\n toolDiffContext: 'fgAlt',\n\n syntaxComment: 'comment',\n syntaxKeyword: 'blue',\n syntaxFunction: 'magenta',\n syntaxVariable: 'violet',\n syntaxString: 'green',\n syntaxNumber: 'orange',\n syntaxType: 'yellow',\n syntaxOperator: 'orange',\n syntaxPunctuation: 'fgAlt',\n\n // A rising ramp from quiet ink through the semantic syntax ladder.\n thinkingOff: 'grey',\n thinkingMinimal: 'fgAlt',\n thinkingLow: 'darkBlue',\n thinkingMedium: 'blue',\n thinkingHigh: 'teal',\n thinkingXhigh: 'magenta',\n thinkingMax: 'red',\n\n bashMode: 'lightGreen',\n },\n export: {\n pageBg: 'bg',\n cardBg: 'bgAlt',\n infoBg: '#3b3526',\n },\n} as const;\n\nexport async function writeDefaultTheme(temporaryDirectory: string): Promise<string> {\n const themePath = path.join(temporaryDirectory, `${DEFAULT_THEME_NAME}.json`);\n await fs.promises.writeFile(themePath, `${JSON.stringify(DEFAULT_THEME, null, 2)}\\n`, { mode: 0o600 });\n return themePath;\n}\n"],"mappings":";;;;;;AAKA,MAAa,qBAAqB;AAElC,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAS,wBAAwB,UAA0B;CACzD,IAAI,OAAO;CACX,KAAK,MAAM,aAAa,UAAU;EAChC,QAAQ,UAAU,WAAW,CAAC;EAC9B,OAAO,KAAK,KAAK,MAAM,QAAU;CACnC;CACA,QAAQ,SAAS,KAAK,sBAAsB;AAC9C;;AAGA,SAAgB,mBAAmB,UAAmC;CACpE,OAAO,sBAAsB,wBAAwB,QAAQ;AAC/D;;;;;;AAOA,SAAgB,2BAA2B,UAAkB,UAAyD;CACpH,MAAM,iBAAiB,wBAAwB,QAAQ;CACvD,KAAK,IAAI,SAAS,GAAG,SAAS,sBAAsB,QAAQ,UAAU;EACpE,MAAM,QAAQ,uBAAuB,iBAAiB,UAAU,sBAAsB;EACtF,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,OAAO;CACnC;CACA,OAAO,sBAAsB;AAC/B;AAEA,MAAa,gBAAgB;CAC3B,SACE;CACF,MAAM;CAGN,MAAM;EACJ,IAAI;EACJ,OAAO;EACP,UAAU;EACV,SAAS;EACT,IAAI;EACJ,OAAO;EACP,MAAM;EACN,SAAS;EACT,MAAM;EACN,UAAU;EACV,MAAM;EACN,OAAO;EACP,YAAY;EACZ,MAAM;EACN,QAAQ;EACR,KAAK;EACL,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,aAAa;EACb,SAAS;EAET,aAAa;EACb,eAAe;CACjB;CACA,QAAQ;EACN,QAAQ;EACR,QAAQ;EACR,cAAc;EACd,aAAa;EACb,SAAS;EACT,OAAO;EACP,SAAS;EACT,OAAO;EACP,KAAK;EACL,MAAM;EACN,cAAc;EAEd,YAAY;EACZ,eAAe;EACf,iBAAiB;EACjB,iBAAiB;EACjB,mBAAmB;EACnB,oBAAoB;EACpB,eAAe;EAGf,eAAe;EACf,aAAa;EACb,WAAW;EACX,YAAY;EAEZ,WAAW;EACX,QAAQ;EACR,WAAW;EACX,QAAQ;EACR,aAAa;EACb,mBAAmB;EACnB,SAAS;EACT,eAAe;EACf,MAAM;EACN,cAAc;EAEd,eAAe;EACf,iBAAiB;EACjB,iBAAiB;EAEjB,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,cAAc;EACd,cAAc;EACd,YAAY;EACZ,gBAAgB;EAChB,mBAAmB;EAGnB,aAAa;EACb,iBAAiB;EACjB,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,eAAe;EACf,aAAa;EAEb,UAAU;CACZ;CACA,QAAQ;EACN,QAAQ;EACR,QAAQ;EACR,QAAQ;CACV;AACF;AAEA,eAAsB,kBAAkB,oBAA6C;CACnF,MAAM,YAAYA,UAAAA,QAAK,KAAK,oBAAoB,GAAG,mBAAmB,MAAM;CAC5E,MAAMC,QAAAA,QAAG,SAAS,UAAU,WAAW,GAAG,KAAK,UAAU,eAAe,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,IAAM,CAAC;CACrG,OAAO;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme-Byj_dBlT.mjs","names":[],"sources":["../src/services/theme/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { FooterTextColor } from '@agimon-ai/po-core/footer';\n\nexport const DEFAULT_THEME_NAME = 'po-dark';\n\nconst AGENT_IDENTITY_COLORS = [\n 'accent',\n 'mdCode',\n 'toolDiffAdded',\n 'warning',\n 'mdHeading',\n 'syntaxNumber',\n] as const satisfies readonly FooterTextColor[];\n\nfunction agentIdentityColorIndex(identity: string): number {\n let hash = 2_166_136_261;\n for (const character of identity) {\n hash ^= character.charCodeAt(0);\n hash = Math.imul(hash, 16_777_619);\n }\n return (hash >>> 0) % AGENT_IDENTITY_COLORS.length;\n}\n\n/** Stable semantic color shared by every UI surface that identifies an agent run. */\nexport function agentIdentityColor(identity: string): FooterTextColor {\n return AGENT_IDENTITY_COLORS[agentIdentityColorIndex(identity)]!;\n}\n\n/**\n * Prefer the identity's stable color, then walk the palette to avoid reusing a\n * color already visible on the same surface. Once every color is occupied,\n * reuse the stable preference rather than changing existing assignments.\n */\nexport function allocateAgentIdentityColor(identity: string, occupied: ReadonlySet<FooterTextColor>): FooterTextColor {\n const preferredIndex = agentIdentityColorIndex(identity);\n for (let offset = 0; offset < AGENT_IDENTITY_COLORS.length; offset++) {\n const color = AGENT_IDENTITY_COLORS[(preferredIndex + offset) % AGENT_IDENTITY_COLORS.length]!;\n if (!occupied.has(color)) return color;\n }\n return AGENT_IDENTITY_COLORS[preferredIndex]!;\n}\n\nexport const DEFAULT_THEME = {\n $schema:\n 'https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json',\n name: DEFAULT_THEME_NAME,\n // Po Jade's quiet ink surfaces and green identity. Syntax colors retain\n // their meaning instead of making every operation a brand accent.\n vars: {\n bg: '#1c1c1c',\n bgAlt: '#171717',\n bgActive: '#2b2b2b',\n bgHover: '#2b2b2b',\n fg: '#dedede',\n fgAlt: '#b0b0b0',\n grey: '#343434',\n greyAlt: '#555555',\n blue: '#8cb5cc',\n darkBlue: '#284b64',\n cyan: '#8fc8c7',\n green: '#81cca3',\n lightGreen: '#a5d9b5',\n teal: '#8ec1ab',\n orange: '#d3ad83',\n red: '#e99185',\n violet: '#b0a0ce',\n magenta: '#c19aae',\n yellow: '#d6be82',\n lightYellow: '#e1cf9e',\n comment: '#a4a4a4',\n // Recessed diff bands retain readable syntax and quiet foreground text.\n diffAddedBg: '#152d20',\n diffRemovedBg: '#35201b',\n },\n colors: {\n accent: 'green',\n border: 'greyAlt',\n borderAccent: 'green',\n borderMuted: 'grey',\n success: 'green',\n error: 'red',\n warning: 'yellow',\n muted: 'fgAlt',\n dim: 'comment',\n text: 'fg',\n thinkingText: 'fgAlt',\n\n selectedBg: 'bgHover',\n userMessageBg: 'bgActive',\n userMessageText: 'fg',\n customMessageBg: '#292c2a',\n customMessageText: 'fg',\n customMessageLabel: 'green',\n toolPendingBg: 'bgAlt',\n // Doubles as the added/removed band behind a diff row, so it stays a wash\n // rather than a fill: syntax highlighting has to remain legible on top.\n toolSuccessBg: 'diffAddedBg',\n toolErrorBg: 'diffRemovedBg',\n toolTitle: 'green',\n toolOutput: 'fg',\n\n mdHeading: 'magenta',\n mdLink: 'blue',\n mdLinkUrl: 'comment',\n mdCode: 'cyan',\n mdCodeBlock: 'lightYellow',\n mdCodeBlockBorder: 'greyAlt',\n mdQuote: 'fgAlt',\n mdQuoteBorder: 'greyAlt',\n mdHr: 'greyAlt',\n mdListBullet: 'green',\n\n toolDiffAdded: 'lightGreen',\n toolDiffRemoved: 'red',\n toolDiffContext: 'fgAlt',\n\n syntaxComment: 'comment',\n syntaxKeyword: 'blue',\n syntaxFunction: 'magenta',\n syntaxVariable: 'violet',\n syntaxString: 'green',\n syntaxNumber: 'orange',\n syntaxType: 'yellow',\n syntaxOperator: 'orange',\n syntaxPunctuation: 'fgAlt',\n\n // A rising ramp from quiet ink through the semantic syntax ladder.\n thinkingOff: 'grey',\n thinkingMinimal: 'fgAlt',\n thinkingLow: 'darkBlue',\n thinkingMedium: 'blue',\n thinkingHigh: 'teal',\n thinkingXhigh: 'magenta',\n thinkingMax: 'red',\n\n bashMode: 'lightGreen',\n },\n export: {\n pageBg: 'bg',\n cardBg: 'bgAlt',\n infoBg: '#3b3526',\n },\n} as const;\n\nexport async function writeDefaultTheme(temporaryDirectory: string): Promise<string> {\n const themePath = path.join(temporaryDirectory, `${DEFAULT_THEME_NAME}.json`);\n await fs.promises.writeFile(themePath, `${JSON.stringify(DEFAULT_THEME, null, 2)}\\n`, { mode: 0o600 });\n return themePath;\n}\n"],"mappings":";;;AAKA,MAAa,qBAAqB;AAElC,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAS,wBAAwB,UAA0B;CACzD,IAAI,OAAO;CACX,KAAK,MAAM,aAAa,UAAU;EAChC,QAAQ,UAAU,WAAW,CAAC;EAC9B,OAAO,KAAK,KAAK,MAAM,QAAU;CACnC;CACA,QAAQ,SAAS,KAAK,sBAAsB;AAC9C;;AAGA,SAAgB,mBAAmB,UAAmC;CACpE,OAAO,sBAAsB,wBAAwB,QAAQ;AAC/D;;;;;;AAOA,SAAgB,2BAA2B,UAAkB,UAAyD;CACpH,MAAM,iBAAiB,wBAAwB,QAAQ;CACvD,KAAK,IAAI,SAAS,GAAG,SAAS,sBAAsB,QAAQ,UAAU;EACpE,MAAM,QAAQ,uBAAuB,iBAAiB,UAAU,sBAAsB;EACtF,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,OAAO;CACnC;CACA,OAAO,sBAAsB;AAC/B;AAEA,MAAa,gBAAgB;CAC3B,SACE;CACF,MAAM;CAGN,MAAM;EACJ,IAAI;EACJ,OAAO;EACP,UAAU;EACV,SAAS;EACT,IAAI;EACJ,OAAO;EACP,MAAM;EACN,SAAS;EACT,MAAM;EACN,UAAU;EACV,MAAM;EACN,OAAO;EACP,YAAY;EACZ,MAAM;EACN,QAAQ;EACR,KAAK;EACL,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,aAAa;EACb,SAAS;EAET,aAAa;EACb,eAAe;CACjB;CACA,QAAQ;EACN,QAAQ;EACR,QAAQ;EACR,cAAc;EACd,aAAa;EACb,SAAS;EACT,OAAO;EACP,SAAS;EACT,OAAO;EACP,KAAK;EACL,MAAM;EACN,cAAc;EAEd,YAAY;EACZ,eAAe;EACf,iBAAiB;EACjB,iBAAiB;EACjB,mBAAmB;EACnB,oBAAoB;EACpB,eAAe;EAGf,eAAe;EACf,aAAa;EACb,WAAW;EACX,YAAY;EAEZ,WAAW;EACX,QAAQ;EACR,WAAW;EACX,QAAQ;EACR,aAAa;EACb,mBAAmB;EACnB,SAAS;EACT,eAAe;EACf,MAAM;EACN,cAAc;EAEd,eAAe;EACf,iBAAiB;EACjB,iBAAiB;EAEjB,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,cAAc;EACd,cAAc;EACd,YAAY;EACZ,gBAAgB;EAChB,mBAAmB;EAGnB,aAAa;EACb,iBAAiB;EACjB,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,eAAe;EACf,aAAa;EAEb,UAAU;CACZ;CACA,QAAQ;EACN,QAAQ;EACR,QAAQ;EACR,QAAQ;CACV;AACF;AAEA,eAAsB,kBAAkB,oBAA6C;CACnF,MAAM,YAAY,KAAK,KAAK,oBAAoB,GAAG,mBAAmB,MAAM;CAC5E,MAAM,GAAG,SAAS,UAAU,WAAW,GAAG,KAAK,UAAU,eAAe,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,IAAM,CAAC;CACrG,OAAO;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uiState-G_Pso-5i.mjs","names":[],"sources":["../src/models/uiState.ts"],"sourcesContent":["import type { LeaderTone } from '@agimon-ai/po-core/leader';\nimport type { MinorModeRecord, ModeTextColor } from '@agimon-ai/po-minor-mode';\n\nexport interface LeaderOption {\n key: string;\n label: string;\n detail?: string;\n tone?: LeaderTone;\n}\n\nexport interface LeaderSnapshot {\n active: boolean;\n prefix: string[];\n label: string;\n options: LeaderOption[];\n rootOptions?: LeaderOption[];\n}\n\nexport interface UiMinorModeStatus {\n source: string;\n id: string;\n label: string;\n detail?: string;\n color?: ModeTextColor;\n order: number;\n}\n\ntype StateListener = (snapshot: LeaderSnapshot) => void;\n\nconst INACTIVE_SNAPSHOT: LeaderSnapshot = {\n active: false,\n prefix: [],\n label: '',\n options: [],\n};\n\nfunction cloneSnapshot(snapshot: LeaderSnapshot): LeaderSnapshot {\n return {\n active: snapshot.active,\n prefix: [...snapshot.prefix],\n label: snapshot.label,\n options: snapshot.options.map((option) => ({ ...option })),\n ...(snapshot.rootOptions ? { rootOptions: snapshot.rootOptions.map((option) => ({ ...option })) } : {}),\n };\n}\n\nexport function projectMinorModeRecords(records: readonly MinorModeRecord[]): UiMinorModeStatus[] {\n return records\n .filter(({ state }) => state.activation !== 'inactive')\n .map(({ descriptor, state }) => ({\n source: descriptor.source,\n id: descriptor.id,\n label: descriptor.label,\n order: descriptor.order,\n ...(state.detail ? { detail: state.detail } : {}),\n ...(state.color ? { color: state.color } : {}),\n }))\n .sort(\n (left, right) =>\n left.order - right.order || left.source.localeCompare(right.source) || left.id.localeCompare(right.id),\n );\n}\n\nexport class DoomUiState {\n private snapshot = INACTIVE_SNAPSHOT;\n private modes: readonly UiMinorModeStatus[] = [];\n private readonly listeners = new Set<StateListener>();\n\n getSnapshot(): LeaderSnapshot {\n return cloneSnapshot(this.snapshot);\n }\n\n getModes(): readonly UiMinorModeStatus[] {\n return this.modes;\n }\n\n setModes(modes: readonly UiMinorModeStatus[]): void {\n this.modes = modes.map((mode) => ({ ...mode }));\n for (const listener of this.listeners) listener(this.getSnapshot());\n }\n\n setLeader(snapshot: LeaderSnapshot): void {\n this.snapshot = cloneSnapshot(snapshot);\n for (const listener of this.listeners) listener(this.getSnapshot());\n }\n\n reset(): void {\n this.modes = [];\n this.setLeader(INACTIVE_SNAPSHOT);\n }\n\n subscribe(listener: StateListener): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n}\n"],"mappings":";AA6BA,MAAM,oBAAoC;CACxC,QAAQ;CACR,QAAQ,CAAC;CACT,OAAO;CACP,SAAS,CAAC;AACZ;AAEA,SAAS,cAAc,UAA0C;CAC/D,OAAO;EACL,QAAQ,SAAS;EACjB,QAAQ,CAAC,GAAG,SAAS,MAAM;EAC3B,OAAO,SAAS;EAChB,SAAS,SAAS,QAAQ,KAAK,YAAY,EAAE,GAAG,OAAO,EAAE;EACzD,GAAI,SAAS,cAAc,EAAE,aAAa,SAAS,YAAY,KAAK,YAAY,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC;CACvG;AACF;AAEA,SAAgB,wBAAwB,SAA0D;CAChG,OAAO,QACJ,QAAQ,EAAE,YAAY,MAAM,eAAe,UAAU,CAAC,CACtD,KAAK,EAAE,YAAY,aAAa;EAC/B,QAAQ,WAAW;EACnB,IAAI,WAAW;EACf,OAAO,WAAW;EAClB,OAAO,WAAW;EAClB,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;EAC/C,GAAI,MAAM,QAAQ,EAAE,OAAO,MAAM,MAAM,IAAI,CAAC;CAC9C,EAAE,CAAC,CACF,MACE,MAAM,UACL,KAAK,QAAQ,MAAM,SAAS,KAAK,OAAO,cAAc,MAAM,MAAM,KAAK,KAAK,GAAG,cAAc,MAAM,EAAE,CACzG;AACJ;AAEA,IAAa,cAAb,MAAyB;CACvB,WAAmB;CACnB,QAA8C,CAAC;CAC/C,4BAA6B,IAAI,IAAmB;CAEpD,cAA8B;EAC5B,OAAO,cAAc,KAAK,QAAQ;CACpC;CAEA,WAAyC;EACvC,OAAO,KAAK;CACd;CAEA,SAAS,OAA2C;EAClD,KAAK,QAAQ,MAAM,KAAK,UAAU,EAAE,GAAG,KAAK,EAAE;EAC9C,KAAK,MAAM,YAAY,KAAK,WAAW,SAAS,KAAK,YAAY,CAAC;CACpE;CAEA,UAAU,UAAgC;EACxC,KAAK,WAAW,cAAc,QAAQ;EACtC,KAAK,MAAM,YAAY,KAAK,WAAW,SAAS,KAAK,YAAY,CAAC;CACpE;CAEA,QAAc;EACZ,KAAK,QAAQ,CAAC;EACd,KAAK,UAAU,iBAAiB;CAClC;CAEA,UAAU,UAAqC;EAC7C,KAAK,UAAU,IAAI,QAAQ;EAC3B,aAAa,KAAK,UAAU,OAAO,QAAQ;CAC7C;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uiState-rUwgKslb.cjs","names":[],"sources":["../src/models/uiState.ts"],"sourcesContent":["import type { LeaderTone } from '@agimon-ai/po-core/leader';\nimport type { MinorModeRecord, ModeTextColor } from '@agimon-ai/po-minor-mode';\n\nexport interface LeaderOption {\n key: string;\n label: string;\n detail?: string;\n tone?: LeaderTone;\n}\n\nexport interface LeaderSnapshot {\n active: boolean;\n prefix: string[];\n label: string;\n options: LeaderOption[];\n rootOptions?: LeaderOption[];\n}\n\nexport interface UiMinorModeStatus {\n source: string;\n id: string;\n label: string;\n detail?: string;\n color?: ModeTextColor;\n order: number;\n}\n\ntype StateListener = (snapshot: LeaderSnapshot) => void;\n\nconst INACTIVE_SNAPSHOT: LeaderSnapshot = {\n active: false,\n prefix: [],\n label: '',\n options: [],\n};\n\nfunction cloneSnapshot(snapshot: LeaderSnapshot): LeaderSnapshot {\n return {\n active: snapshot.active,\n prefix: [...snapshot.prefix],\n label: snapshot.label,\n options: snapshot.options.map((option) => ({ ...option })),\n ...(snapshot.rootOptions ? { rootOptions: snapshot.rootOptions.map((option) => ({ ...option })) } : {}),\n };\n}\n\nexport function projectMinorModeRecords(records: readonly MinorModeRecord[]): UiMinorModeStatus[] {\n return records\n .filter(({ state }) => state.activation !== 'inactive')\n .map(({ descriptor, state }) => ({\n source: descriptor.source,\n id: descriptor.id,\n label: descriptor.label,\n order: descriptor.order,\n ...(state.detail ? { detail: state.detail } : {}),\n ...(state.color ? { color: state.color } : {}),\n }))\n .sort(\n (left, right) =>\n left.order - right.order || left.source.localeCompare(right.source) || left.id.localeCompare(right.id),\n );\n}\n\nexport class DoomUiState {\n private snapshot = INACTIVE_SNAPSHOT;\n private modes: readonly UiMinorModeStatus[] = [];\n private readonly listeners = new Set<StateListener>();\n\n getSnapshot(): LeaderSnapshot {\n return cloneSnapshot(this.snapshot);\n }\n\n getModes(): readonly UiMinorModeStatus[] {\n return this.modes;\n }\n\n setModes(modes: readonly UiMinorModeStatus[]): void {\n this.modes = modes.map((mode) => ({ ...mode }));\n for (const listener of this.listeners) listener(this.getSnapshot());\n }\n\n setLeader(snapshot: LeaderSnapshot): void {\n this.snapshot = cloneSnapshot(snapshot);\n for (const listener of this.listeners) listener(this.getSnapshot());\n }\n\n reset(): void {\n this.modes = [];\n this.setLeader(INACTIVE_SNAPSHOT);\n }\n\n subscribe(listener: StateListener): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n}\n"],"mappings":";AA6BA,MAAM,oBAAoC;CACxC,QAAQ;CACR,QAAQ,CAAC;CACT,OAAO;CACP,SAAS,CAAC;AACZ;AAEA,SAAS,cAAc,UAA0C;CAC/D,OAAO;EACL,QAAQ,SAAS;EACjB,QAAQ,CAAC,GAAG,SAAS,MAAM;EAC3B,OAAO,SAAS;EAChB,SAAS,SAAS,QAAQ,KAAK,YAAY,EAAE,GAAG,OAAO,EAAE;EACzD,GAAI,SAAS,cAAc,EAAE,aAAa,SAAS,YAAY,KAAK,YAAY,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC;CACvG;AACF;AAEA,SAAgB,wBAAwB,SAA0D;CAChG,OAAO,QACJ,QAAQ,EAAE,YAAY,MAAM,eAAe,UAAU,CAAC,CACtD,KAAK,EAAE,YAAY,aAAa;EAC/B,QAAQ,WAAW;EACnB,IAAI,WAAW;EACf,OAAO,WAAW;EAClB,OAAO,WAAW;EAClB,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;EAC/C,GAAI,MAAM,QAAQ,EAAE,OAAO,MAAM,MAAM,IAAI,CAAC;CAC9C,EAAE,CAAC,CACF,MACE,MAAM,UACL,KAAK,QAAQ,MAAM,SAAS,KAAK,OAAO,cAAc,MAAM,MAAM,KAAK,KAAK,GAAG,cAAc,MAAM,EAAE,CACzG;AACJ;AAEA,IAAa,cAAb,MAAyB;CACvB,WAAmB;CACnB,QAA8C,CAAC;CAC/C,4BAA6B,IAAI,IAAmB;CAEpD,cAA8B;EAC5B,OAAO,cAAc,KAAK,QAAQ;CACpC;CAEA,WAAyC;EACvC,OAAO,KAAK;CACd;CAEA,SAAS,OAA2C;EAClD,KAAK,QAAQ,MAAM,KAAK,UAAU,EAAE,GAAG,KAAK,EAAE;EAC9C,KAAK,MAAM,YAAY,KAAK,WAAW,SAAS,KAAK,YAAY,CAAC;CACpE;CAEA,UAAU,UAAgC;EACxC,KAAK,WAAW,cAAc,QAAQ;EACtC,KAAK,MAAM,YAAY,KAAK,WAAW,SAAS,KAAK,YAAY,CAAC;CACpE;CAEA,QAAc;EACZ,KAAK,QAAQ,CAAC;EACd,KAAK,UAAU,iBAAiB;CAClC;CAEA,UAAU,UAAqC;EAC7C,KAAK,UAAU,IAAI,QAAQ;EAC3B,aAAa,KAAK,UAAU,OAAO,QAAQ;CAC7C;AACF"}
|