@cleocode/cleo-os 2026.4.40 → 2026.4.42
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/bin/postinstall.js +81 -5
- package/bin/postinstall.js.map +1 -1
- package/dist/cli.js +67 -3
- package/dist/cli.js.map +1 -1
- package/dist/postinstall.js +81 -5
- package/dist/postinstall.js.map +1 -1
- package/extensions/cleo-cant-bridge.d.ts.map +1 -1
- package/extensions/cleo-cant-bridge.js +235 -8
- package/extensions/cleo-cant-bridge.js.map +1 -1
- package/extensions/cleo-cant-bridge.ts +246 -12
- package/extensions/cleo-chatroom.d.ts.map +1 -1
- package/extensions/cleo-chatroom.js +4 -0
- package/extensions/cleo-chatroom.js.map +1 -1
- package/extensions/cleo-chatroom.ts +12 -8
- package/package.json +5 -3
- package/starter-bundle/CLEOOS-IDENTITY.md +50 -0
|
@@ -48,11 +48,10 @@
|
|
|
48
48
|
|
|
49
49
|
import { execFile } from "node:child_process";
|
|
50
50
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
51
|
+
import { createRequire } from "node:module";
|
|
51
52
|
import { homedir } from "node:os";
|
|
52
53
|
import { basename, join } from "node:path";
|
|
53
54
|
import { promisify } from "node:util";
|
|
54
|
-
|
|
55
|
-
const execFileAsync = promisify(execFile);
|
|
56
55
|
import type {
|
|
57
56
|
ExtensionAPI,
|
|
58
57
|
ExtensionContext,
|
|
@@ -75,6 +74,128 @@ import {
|
|
|
75
74
|
LINE_VERTICAL,
|
|
76
75
|
} from "./tui-theme.js";
|
|
77
76
|
|
|
77
|
+
const execFileAsync = promisify(execFile);
|
|
78
|
+
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
// Module resolution helper for deployed extensions
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// When this extension is deployed to ~/.local/share/cleo/extensions/, bare
|
|
83
|
+
// specifier imports like `import("@cleocode/cant")` fail because there is no
|
|
84
|
+
// node_modules in that directory. The postinstall script creates a symlink
|
|
85
|
+
// (extensions/node_modules → cleo-os/node_modules) to fix this, but as a
|
|
86
|
+
// defensive fallback we also try `createRequire` rooted at the cleo-os
|
|
87
|
+
// package.json. This makes the extension work even if the symlink is missing.
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Resolve the cleo-os package root by walking up from this file's location.
|
|
91
|
+
*
|
|
92
|
+
* In development (monorepo), the extension lives at
|
|
93
|
+
* `packages/cleo-os/extensions/cleo-cant-bridge.ts` so the package root is `..`.
|
|
94
|
+
*
|
|
95
|
+
* When deployed to `~/.local/share/cleo/extensions/`, the symlink
|
|
96
|
+
* `node_modules → <pkgRoot>/node_modules` lets us find the package root
|
|
97
|
+
* by resolving the symlink target's parent.
|
|
98
|
+
*
|
|
99
|
+
* As a last resort, searches common global npm paths for @cleocode/cleo-os.
|
|
100
|
+
*
|
|
101
|
+
* @returns The absolute path to the cleo-os package.json, or null if not found.
|
|
102
|
+
*/
|
|
103
|
+
function findCleoOsPackageJson(): string | null {
|
|
104
|
+
// Strategy 1: We're inside the package (dev or extensions/ is in pkgRoot)
|
|
105
|
+
const parentPkgJson = join(import.meta.dirname ?? ".", "..", "package.json");
|
|
106
|
+
try {
|
|
107
|
+
if (existsSync(parentPkgJson)) {
|
|
108
|
+
const pkg = JSON.parse(readFileSync(parentPkgJson, "utf-8"));
|
|
109
|
+
if (pkg.name === "@cleocode/cleo-os") return parentPkgJson;
|
|
110
|
+
}
|
|
111
|
+
} catch { /* ignore */ }
|
|
112
|
+
|
|
113
|
+
// Strategy 2: Search common global install locations
|
|
114
|
+
const home = homedir();
|
|
115
|
+
const candidates = [
|
|
116
|
+
// npm global (custom prefix)
|
|
117
|
+
join(home, ".npm-global", "lib", "node_modules", "@cleocode", "cleo-os", "package.json"),
|
|
118
|
+
// npm global (default prefix on Linux/macOS)
|
|
119
|
+
join("/usr", "local", "lib", "node_modules", "@cleocode", "cleo-os", "package.json"),
|
|
120
|
+
// npm global (default prefix via nvm)
|
|
121
|
+
...(process.env["NVM_DIR"]
|
|
122
|
+
? [join(process.env["NVM_DIR"], "versions", "node", `v${process.version.slice(1)}`, "lib", "node_modules", "@cleocode", "cleo-os", "package.json")]
|
|
123
|
+
: []),
|
|
124
|
+
// npm global (prefix from env)
|
|
125
|
+
...(process.env["npm_config_prefix"]
|
|
126
|
+
? [join(process.env["npm_config_prefix"], "lib", "node_modules", "@cleocode", "cleo-os", "package.json")]
|
|
127
|
+
: []),
|
|
128
|
+
];
|
|
129
|
+
|
|
130
|
+
for (const candidate of candidates) {
|
|
131
|
+
try {
|
|
132
|
+
if (existsSync(candidate)) return candidate;
|
|
133
|
+
} catch { /* ignore */ }
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** Cached createRequire instance rooted at the cleo-os package. */
|
|
140
|
+
let _cleoOsRequire: NodeRequire | null | undefined;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Get a `require` function rooted at the cleo-os package.json.
|
|
144
|
+
*
|
|
145
|
+
* Used as a fallback when `import()` cannot resolve @cleocode/* packages
|
|
146
|
+
* from the deployed extensions directory.
|
|
147
|
+
*
|
|
148
|
+
* @returns A `require` function, or null if the cleo-os package cannot be found.
|
|
149
|
+
*/
|
|
150
|
+
function getCleoOsRequire(): NodeRequire | null {
|
|
151
|
+
if (_cleoOsRequire !== undefined) return _cleoOsRequire;
|
|
152
|
+
|
|
153
|
+
const pkgJson = findCleoOsPackageJson();
|
|
154
|
+
if (pkgJson) {
|
|
155
|
+
_cleoOsRequire = createRequire(pkgJson);
|
|
156
|
+
} else {
|
|
157
|
+
_cleoOsRequire = null;
|
|
158
|
+
}
|
|
159
|
+
return _cleoOsRequire;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Dynamically import a @cleocode/* module with fallback resolution.
|
|
164
|
+
*
|
|
165
|
+
* Tries the standard `import()` first (works when node_modules symlink exists
|
|
166
|
+
* or in a monorepo). Falls back to `createRequire` rooted at the cleo-os
|
|
167
|
+
* package root so that deployed extensions can find @cleocode/* dependencies
|
|
168
|
+
* even without the symlink.
|
|
169
|
+
*
|
|
170
|
+
* @param specifier - The bare module specifier (e.g. "@cleocode/cant").
|
|
171
|
+
* @returns The imported module, or throws if resolution fails everywhere.
|
|
172
|
+
*/
|
|
173
|
+
async function importCleoModule(specifier: string): Promise<unknown> {
|
|
174
|
+
// Try standard import() first — works in dev and with node_modules symlink
|
|
175
|
+
try {
|
|
176
|
+
return await import(specifier);
|
|
177
|
+
} catch {
|
|
178
|
+
// Standard import failed — try createRequire fallback
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Fallback: use createRequire rooted at cleo-os package
|
|
182
|
+
const req = getCleoOsRequire();
|
|
183
|
+
if (req) {
|
|
184
|
+
try {
|
|
185
|
+
// resolve() finds the path, then import() loads it as ESM
|
|
186
|
+
const resolved = req.resolve(specifier);
|
|
187
|
+
return await import(resolved);
|
|
188
|
+
} catch {
|
|
189
|
+
// createRequire also failed — fall through to throw
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
throw new Error(
|
|
194
|
+
`Cannot resolve module "${specifier}". ` +
|
|
195
|
+
`Ensure @cleocode/cleo-os is installed globally and its postinstall ran successfully.`
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
78
199
|
// ============================================================================
|
|
79
200
|
// T420: validate-on-load constants and pure helpers
|
|
80
201
|
// ============================================================================
|
|
@@ -498,14 +619,10 @@ function discoverCantFilesMultiTier(projectDir: string): {
|
|
|
498
619
|
fileMap.set(basename(file), file);
|
|
499
620
|
}
|
|
500
621
|
|
|
501
|
-
const afterGlobal = fileMap.size;
|
|
502
|
-
|
|
503
622
|
for (const file of userFiles) {
|
|
504
623
|
fileMap.set(basename(file), file);
|
|
505
624
|
}
|
|
506
625
|
|
|
507
|
-
const afterUser = fileMap.size;
|
|
508
|
-
|
|
509
626
|
for (const file of projectFiles) {
|
|
510
627
|
fileMap.set(basename(file), file);
|
|
511
628
|
}
|
|
@@ -547,7 +664,8 @@ async function fetchMentalModelInjection(
|
|
|
547
664
|
try {
|
|
548
665
|
// Lazy import: @cleocode/core may not be present in all environments.
|
|
549
666
|
// memoryFind is the engine-compat wrapper (T418) that accepts `agent`.
|
|
550
|
-
|
|
667
|
+
// Uses importCleoModule for resolution from deployed extensions directory.
|
|
668
|
+
const coreModule = (await importCleoModule("@cleocode/core")) as {
|
|
551
669
|
memoryFind?: (
|
|
552
670
|
params: {
|
|
553
671
|
query: string;
|
|
@@ -628,8 +746,9 @@ export default function (pi: ExtensionAPI): void {
|
|
|
628
746
|
const { files, stats } = discoverCantFilesMultiTier(ctx.cwd);
|
|
629
747
|
if (files.length === 0) return;
|
|
630
748
|
|
|
631
|
-
// Dynamic import: @cleocode/cant may not be installed in all environments
|
|
632
|
-
|
|
749
|
+
// Dynamic import: @cleocode/cant may not be installed in all environments.
|
|
750
|
+
// Uses importCleoModule for resolution from deployed extensions directory.
|
|
751
|
+
const cantModule = (await importCleoModule("@cleocode/cant")) as {
|
|
633
752
|
compileBundle: (paths: string[]) => Promise<{
|
|
634
753
|
renderSystemPrompt: () => string;
|
|
635
754
|
diagnostics: Array<{ severity: string; message: string; sourcePath: string }>;
|
|
@@ -710,8 +829,8 @@ export default function (pi: ExtensionAPI): void {
|
|
|
710
829
|
}
|
|
711
830
|
});
|
|
712
831
|
|
|
713
|
-
// before_agent_start: APPEND
|
|
714
|
-
// to system prompt (per ULTRAPLAN L6, never replace)
|
|
832
|
+
// before_agent_start: APPEND identity bootstrap + CANT bundle + memory bridge
|
|
833
|
+
// + mental-model injection to system prompt (per ULTRAPLAN L6, never replace)
|
|
715
834
|
pi.on(
|
|
716
835
|
"before_agent_start",
|
|
717
836
|
async (
|
|
@@ -731,6 +850,120 @@ export default function (pi: ExtensionAPI): void {
|
|
|
731
850
|
const existingPrompt = event.systemPrompt ?? "";
|
|
732
851
|
let appendix = "";
|
|
733
852
|
|
|
853
|
+
// ================================================================
|
|
854
|
+
// IDENTITY BOOTSTRAP (T555): Inject CleoOS identity + operational
|
|
855
|
+
// briefing for the MAIN session agent. Sub-agents get their identity
|
|
856
|
+
// from the CANT bundle + mental model below.
|
|
857
|
+
// ================================================================
|
|
858
|
+
const isMainAgent = !event.agentName || event.agentName === "";
|
|
859
|
+
if (isMainAgent) {
|
|
860
|
+
const projectRoot = event.projectRoot ?? ctx?.cwd ?? "";
|
|
861
|
+
|
|
862
|
+
// Build identity + briefing in parallel (best-effort, 8s timeout)
|
|
863
|
+
const [briefingResult, nextResult, memoryResult] = await Promise.allSettled([
|
|
864
|
+
execFileAsync("cleo", ["session", "briefing", "--json"], {
|
|
865
|
+
timeout: 8_000,
|
|
866
|
+
cwd: projectRoot || undefined,
|
|
867
|
+
}),
|
|
868
|
+
execFileAsync("cleo", ["next", "--json", "--limit", "3"], {
|
|
869
|
+
timeout: 8_000,
|
|
870
|
+
cwd: projectRoot || undefined,
|
|
871
|
+
}),
|
|
872
|
+
execFileAsync("cleo", ["memory", "find", "decision", "--json", "--limit", "5"], {
|
|
873
|
+
timeout: 8_000,
|
|
874
|
+
cwd: projectRoot || undefined,
|
|
875
|
+
}),
|
|
876
|
+
]);
|
|
877
|
+
|
|
878
|
+
// Build the identity block
|
|
879
|
+
const identityLines: string[] = [
|
|
880
|
+
"",
|
|
881
|
+
"===== CLEOOS IDENTITY BOOTSTRAP =====",
|
|
882
|
+
"",
|
|
883
|
+
"You are **CleoOS**, the Agentic Development Environment.",
|
|
884
|
+
"You are NOT a generic AI assistant. You are a governed, autonomous project management intelligence.",
|
|
885
|
+
"",
|
|
886
|
+
"## Your Systems",
|
|
887
|
+
"- **BRAIN** — Your persistent memory. Observations, patterns, learnings, decisions in brain.db. Use `cleo memory find/fetch/observe`.",
|
|
888
|
+
"- **LOOM** — Your lifecycle methodology. RCASD-IVTR+C pipeline with gates. Use `cleo pipeline`.",
|
|
889
|
+
"- **NEXUS** — Your cross-project network. Project registry, federated queries. Use `cleo nexus`.",
|
|
890
|
+
"- **LAFS** — Your communication contract. JSON envelopes, MVI progressive disclosure, exit codes.",
|
|
891
|
+
"- **CANT** — Your agent definition language. Team topology, agent personas, tool ACLs.",
|
|
892
|
+
"",
|
|
893
|
+
"## Your Capabilities",
|
|
894
|
+
"- 224 canonical operations across 10 domains: tasks, session, memory, check, pipeline, orchestrate, tools, admin, nexus, sticky",
|
|
895
|
+
"- Multi-agent orchestration: spawn Team Leads who manage Workers via the CANT team topology",
|
|
896
|
+
"- Autonomous task management: create, assign, verify, complete tasks with lifecycle governance",
|
|
897
|
+
"- Living memory: observe facts, store decisions/patterns/learnings, recall via 3-layer retrieval",
|
|
898
|
+
"",
|
|
899
|
+
"## Your Protocol",
|
|
900
|
+
"- Start with `cleo session status` → `cleo dash` → `cleo current` → `cleo next`",
|
|
901
|
+
"- Use `cleo memory find` to recall prior knowledge before making decisions",
|
|
902
|
+
"- Use `cleo observe` to store important facts for future sessions",
|
|
903
|
+
"- Use `cleo complete` to mark tasks done (requires verification gates)",
|
|
904
|
+
"- End sessions with `cleo session end --note \"handoff summary\"`",
|
|
905
|
+
"",
|
|
906
|
+
"## Your Rules",
|
|
907
|
+
"- You MUST use the cleo CLI for all operations. Never read/write .cleo/ files directly.",
|
|
908
|
+
"- You MUST follow RCASD-IVTR+C lifecycle gates. No skipping stages.",
|
|
909
|
+
"- You MUST record decisions via `cleo memory decision.store`.",
|
|
910
|
+
"- You MUST verify work before marking complete.",
|
|
911
|
+
"- You speak the CANT DSL and can read/create agent definitions.",
|
|
912
|
+
"",
|
|
913
|
+
];
|
|
914
|
+
|
|
915
|
+
// Append briefing data if available
|
|
916
|
+
if (briefingResult.status === "fulfilled") {
|
|
917
|
+
try {
|
|
918
|
+
const briefing = JSON.parse(briefingResult.value.stdout);
|
|
919
|
+
const data = briefing?.data ?? briefing;
|
|
920
|
+
if (data?.currentTask) {
|
|
921
|
+
identityLines.push(`## Current Task`);
|
|
922
|
+
identityLines.push(`- **${data.currentTask.id}**: ${data.currentTask.title} (${data.currentTask.status})`);
|
|
923
|
+
identityLines.push("");
|
|
924
|
+
}
|
|
925
|
+
if (data?.handoff?.note) {
|
|
926
|
+
identityLines.push(`## Last Session Handoff`);
|
|
927
|
+
identityLines.push(data.handoff.note);
|
|
928
|
+
identityLines.push("");
|
|
929
|
+
}
|
|
930
|
+
} catch { /* parse failure — skip briefing data */ }
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
// Append next tasks
|
|
934
|
+
if (nextResult.status === "fulfilled") {
|
|
935
|
+
try {
|
|
936
|
+
const next = JSON.parse(nextResult.value.stdout);
|
|
937
|
+
const tasks = next?.data?.tasks ?? next?.data?.results ?? [];
|
|
938
|
+
if (Array.isArray(tasks) && tasks.length > 0) {
|
|
939
|
+
identityLines.push(`## Next Tasks`);
|
|
940
|
+
for (const t of tasks.slice(0, 3)) {
|
|
941
|
+
identityLines.push(`- **${t.id}**: ${t.title} (${t.priority ?? "medium"})`);
|
|
942
|
+
}
|
|
943
|
+
identityLines.push("");
|
|
944
|
+
}
|
|
945
|
+
} catch { /* parse failure — skip */ }
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
// Append recent brain decisions
|
|
949
|
+
if (memoryResult.status === "fulfilled") {
|
|
950
|
+
try {
|
|
951
|
+
const mem = JSON.parse(memoryResult.value.stdout);
|
|
952
|
+
const results = mem?.data?.results ?? [];
|
|
953
|
+
if (Array.isArray(results) && results.length > 0) {
|
|
954
|
+
identityLines.push(`## Recent Brain Context`);
|
|
955
|
+
for (const r of results.slice(0, 5)) {
|
|
956
|
+
identityLines.push(`- [${r.id}] ${r.title} (${r.date ?? ""})`);
|
|
957
|
+
}
|
|
958
|
+
identityLines.push("");
|
|
959
|
+
}
|
|
960
|
+
} catch { /* parse failure — skip */ }
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
identityLines.push("===== END IDENTITY BOOTSTRAP =====");
|
|
964
|
+
appendix += identityLines.join("\n");
|
|
965
|
+
}
|
|
966
|
+
|
|
734
967
|
// APPEND CANT bundle prompt
|
|
735
968
|
if (bundlePrompt) {
|
|
736
969
|
appendix += "\n\n" + bundlePrompt;
|
|
@@ -777,7 +1010,8 @@ export default function (pi: ExtensionAPI): void {
|
|
|
777
1010
|
// declared write globs. Leads dispatch; workers execute within scope.
|
|
778
1011
|
// Fires on every Pi tool_call event.
|
|
779
1012
|
// The before_agent_start handler (T420 validate-on-load) is NOT touched here.
|
|
780
|
-
|
|
1013
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Pi >=0.66 exposes tool_call but type defs lag behind
|
|
1014
|
+
(pi as any).on(
|
|
781
1015
|
"tool_call",
|
|
782
1016
|
async (event: {
|
|
783
1017
|
/** CANT agent definition resolved by Pi at spawn time, if available. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleo-chatroom.d.ts","sourceRoot":"","sources":["cleo-chatroom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,+BAA+B,CAAC;AAOvC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/D,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,OAAO,EAAE,cAAc,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,YAAY,CAAC;IACxF,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAqCD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CASlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAItD;AAmFD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"cleo-chatroom.d.ts","sourceRoot":"","sources":["cleo-chatroom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,+BAA+B,CAAC;AAOvC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/D,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,OAAO,EAAE,cAAc,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,YAAY,CAAC;IACxF,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAqCD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CASlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAItD;AAmFD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CA0N/C"}
|
|
@@ -207,6 +207,7 @@ export default function (pi) {
|
|
|
207
207
|
recordMessage(msg);
|
|
208
208
|
renderWidget(ctx);
|
|
209
209
|
return {
|
|
210
|
+
details: undefined,
|
|
210
211
|
content: [
|
|
211
212
|
{
|
|
212
213
|
type: "text",
|
|
@@ -237,6 +238,7 @@ export default function (pi) {
|
|
|
237
238
|
recordMessage(msg);
|
|
238
239
|
renderWidget(ctx);
|
|
239
240
|
return {
|
|
241
|
+
details: undefined,
|
|
240
242
|
content: [
|
|
241
243
|
{
|
|
242
244
|
type: "text",
|
|
@@ -267,6 +269,7 @@ export default function (pi) {
|
|
|
267
269
|
recordMessage(msg);
|
|
268
270
|
renderWidget(ctx);
|
|
269
271
|
return {
|
|
272
|
+
details: undefined,
|
|
270
273
|
content: [
|
|
271
274
|
{
|
|
272
275
|
type: "text",
|
|
@@ -297,6 +300,7 @@ export default function (pi) {
|
|
|
297
300
|
recordMessage(msg);
|
|
298
301
|
renderWidget(ctx);
|
|
299
302
|
return {
|
|
303
|
+
details: undefined,
|
|
300
304
|
content: [
|
|
301
305
|
{
|
|
302
306
|
type: "text",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleo-chatroom.js","sourceRoot":"","sources":["cleo-chatroom.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cleo-chatroom.js","sourceRoot":"","sources":["cleo-chatroom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAMjC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAkCzC,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,UAAU,GAAG,eAAe,CAAC;AACnC,MAAM,UAAU,GAAG,eAAe,CAAC;AACnC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,wDAAwD;AACxD,MAAM,QAAQ,GAAkB,EAAE,CAAC;AAEnC,yDAAyD;AACzD,IAAI,OAAO,GAAkB,IAAI,CAAC;AAElC,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;GAKG;AACH,SAAS,aAAa,CAAC,GAAgB;IACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,IAA+B;IACxD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,KAAK,CAAC;QACf;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,GAAgB;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,GAAG,MAAM,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,GAAqB;IACzC,IAAI,CAAC,GAAG,CAAC,KAAK;QAAE,OAAO;IACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,mBAAmB,CAAC,EAAE;YAClD,SAAS,EAAE,aAAa;SACzB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IAClE,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,QAAQ,CAAC,MAAM,SAAS,CAAC,CAAC;AAClE,CAAC;AAED,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;IACnC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;IAC1E,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACrD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;IAC5D,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,KAAK,CAAC;QACT,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACvB,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC,CAC1E;CACF,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;IACzE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;IAC5D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;IACvE,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,KAAK,CAAC;QACT,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACvB,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC,CAC1E;CACF,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;IAC3E,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;IAC5D,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC;QACxB,WAAW,EAAE,gCAAgC;KAC9C,CAAC;IACF,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,KAAK,CAAC;QACT,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACvB,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC,CAC1E;CACF,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;IACnE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACrD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;IACtE,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,KAAK,CAAC;QACT,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACvB,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC,CAC1E;CACF,CAAC,CAAC;AAEH,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,WAAW,EAAgB;IACvC,4EAA4E;IAC5E,qDAAqD;IACrD,4EAA4E;IAC5E,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAe,EAAE,GAAqB,EAAE,EAAE;QACtE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACpB,OAAO,GAAG,IAAI,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC/C,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACjE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,SAAS,QAAQ,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;QAED,YAAY,CAAC,GAAG,CAAC,CAAC;QAElB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,sBAAsB;IACtB,4EAA4E;IAC5E,EAAE,CAAC,YAAY,CAAC;QACd,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,yDAAyD;YACzD,sDAAsD;QACxD,UAAU,EAAE,gBAAgB;QAC5B,KAAK,CAAC,OAAO,CACX,GAAW,EACX,MAA6E,EAC7E,OAAgC,EAChC,SAAkB,EAClB,GAAqB;YAErB,MAAM,GAAG,GAAgB;gBACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,MAAM,CAAC,IAAI;gBACf,OAAO,EAAE,cAAc;gBACvB,IAAI,EAAE,MAAM,CAAC,OAAO;gBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;YACF,aAAa,CAAC,GAAG,CAAC,CAAC;YACnB,YAAY,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE;qBAC/D;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,4EAA4E;IAC5E,2BAA2B;IAC3B,4EAA4E;IAC5E,EAAE,CAAC,YAAY,CAAC;QACd,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,iEAAiE;YACjE,4DAA4D;QAC9D,UAAU,EAAE,qBAAqB;QACjC,KAAK,CAAC,OAAO,CACX,GAAW,EACX,MAA8E,EAC9E,OAAgC,EAChC,SAAkB,EAClB,GAAqB;YAErB,MAAM,GAAG,GAAgB;gBACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,QAAQ,MAAM,CAAC,KAAK,EAAE;gBAC1B,OAAO,EAAE,mBAAmB;gBAC5B,IAAI,EAAE,MAAM,CAAC,OAAO;gBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;YACF,aAAa,CAAC,GAAG,CAAC,CAAC;YACnB,YAAY,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,qBAAqB,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,EAAE;qBAC7D;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,4EAA4E;IAC5E,gCAAgC;IAChC,4EAA4E;IAC5E,EAAE,CAAC,YAAY,CAAC;QACd,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,wDAAwD;YACxD,8DAA8D;QAChE,UAAU,EAAE,0BAA0B;QACtC,KAAK,CAAC,OAAO,CACX,GAAW,EACX,MAAqF,EACrF,OAAgC,EAChC,SAAkB,EAClB,GAAqB;YAErB,MAAM,GAAG,GAAgB;gBACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,MAAM,CAAC,YAAY;gBACvB,OAAO,EAAE,wBAAwB;gBACjC,IAAI,EAAE,MAAM,CAAC,OAAO;gBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;YACF,aAAa,CAAC,GAAG,CAAC,CAAC;YACnB,YAAY,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,+BAA+B,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,OAAO,EAAE;qBAC9E;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAC5E,EAAE,CAAC,YAAY,CAAC;QACd,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,mEAAmE;YACnE,4DAA4D;QAC9D,UAAU,EAAE,eAAe;QAC3B,KAAK,CAAC,OAAO,CACX,GAAW,EACX,MAA6E,EAC7E,OAAgC,EAChC,SAAkB,EAClB,GAAqB;YAErB,MAAM,GAAG,GAAgB;gBACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,MAAM,CAAC,IAAI;gBACf,OAAO,EAAE,YAAY;gBACrB,IAAI,EAAE,MAAM,CAAC,OAAO;gBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;YACF,aAAa,CAAC,GAAG,CAAC,CAAC;YACnB,YAAY,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,sBAAsB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE;qBAC7D;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,4EAA4E;IAC5E,2CAA2C;IAC3C,4EAA4E;IAC5E,EAAE,CAAC,eAAe,CAAC,gBAAgB,EAAE;QACnC,WAAW,EAAE,2CAA2C;QACxD,OAAO,EAAE,KAAK,EAAE,KAAa,EAAE,GAA4B,EAAE,EAAE;YAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG;gBACZ,cAAc,QAAQ,CAAC,MAAM,mBAAmB;gBAChD,QAAQ,OAAO,IAAI,QAAQ,EAAE;gBAC7B,EAAE;gBACF,kBAAkB;gBAClB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;aAC3B,CAAC;YACF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACpC,CAAC;YACD,EAAE,CAAC,WAAW,CACZ;gBACE,UAAU,EAAE,oBAAoB;gBAChC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB,OAAO,EAAE,IAAI;aACd,EACD,EAAE,WAAW,EAAE,KAAK,EAAE,CACvB,CAAC;YACF,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,QAAQ,CAAC,MAAM,WAAW,EAAE,MAAM,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,4EAA4E;IAC5E,gCAAgC;IAChC,4EAA4E;IAC5E,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACnC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACpB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -262,8 +262,8 @@ export default function (pi: ExtensionAPI): void {
|
|
|
262
262
|
async execute(
|
|
263
263
|
_id: string,
|
|
264
264
|
params: { message: string; from: string; lead: string; role?: AgentTierRole },
|
|
265
|
-
_signal: AbortSignal,
|
|
266
|
-
_onUpdate:
|
|
265
|
+
_signal: AbortSignal | undefined,
|
|
266
|
+
_onUpdate: unknown,
|
|
267
267
|
ctx: ExtensionContext,
|
|
268
268
|
) {
|
|
269
269
|
const msg: ChatMessage = {
|
|
@@ -277,6 +277,7 @@ export default function (pi: ExtensionAPI): void {
|
|
|
277
277
|
recordMessage(msg);
|
|
278
278
|
renderWidget(ctx);
|
|
279
279
|
return {
|
|
280
|
+
details: undefined,
|
|
280
281
|
content: [
|
|
281
282
|
{
|
|
282
283
|
type: "text" as const,
|
|
@@ -300,8 +301,8 @@ export default function (pi: ExtensionAPI): void {
|
|
|
300
301
|
async execute(
|
|
301
302
|
_id: string,
|
|
302
303
|
params: { message: string; from: string; group: string; role?: AgentTierRole },
|
|
303
|
-
_signal: AbortSignal,
|
|
304
|
-
_onUpdate:
|
|
304
|
+
_signal: AbortSignal | undefined,
|
|
305
|
+
_onUpdate: unknown,
|
|
305
306
|
ctx: ExtensionContext,
|
|
306
307
|
) {
|
|
307
308
|
const msg: ChatMessage = {
|
|
@@ -315,6 +316,7 @@ export default function (pi: ExtensionAPI): void {
|
|
|
315
316
|
recordMessage(msg);
|
|
316
317
|
renderWidget(ctx);
|
|
317
318
|
return {
|
|
319
|
+
details: undefined,
|
|
318
320
|
content: [
|
|
319
321
|
{
|
|
320
322
|
type: "text" as const,
|
|
@@ -338,8 +340,8 @@ export default function (pi: ExtensionAPI): void {
|
|
|
338
340
|
async execute(
|
|
339
341
|
_id: string,
|
|
340
342
|
params: { message: string; from: string; orchestrator: string; role?: AgentTierRole },
|
|
341
|
-
_signal: AbortSignal,
|
|
342
|
-
_onUpdate:
|
|
343
|
+
_signal: AbortSignal | undefined,
|
|
344
|
+
_onUpdate: unknown,
|
|
343
345
|
ctx: ExtensionContext,
|
|
344
346
|
) {
|
|
345
347
|
const msg: ChatMessage = {
|
|
@@ -353,6 +355,7 @@ export default function (pi: ExtensionAPI): void {
|
|
|
353
355
|
recordMessage(msg);
|
|
354
356
|
renderWidget(ctx);
|
|
355
357
|
return {
|
|
358
|
+
details: undefined,
|
|
356
359
|
content: [
|
|
357
360
|
{
|
|
358
361
|
type: "text" as const,
|
|
@@ -376,8 +379,8 @@ export default function (pi: ExtensionAPI): void {
|
|
|
376
379
|
async execute(
|
|
377
380
|
_id: string,
|
|
378
381
|
params: { message: string; from: string; peer: string; role?: AgentTierRole },
|
|
379
|
-
_signal: AbortSignal,
|
|
380
|
-
_onUpdate:
|
|
382
|
+
_signal: AbortSignal | undefined,
|
|
383
|
+
_onUpdate: unknown,
|
|
381
384
|
ctx: ExtensionContext,
|
|
382
385
|
) {
|
|
383
386
|
const msg: ChatMessage = {
|
|
@@ -391,6 +394,7 @@ export default function (pi: ExtensionAPI): void {
|
|
|
391
394
|
recordMessage(msg);
|
|
392
395
|
renderWidget(ctx);
|
|
393
396
|
return {
|
|
397
|
+
details: undefined,
|
|
394
398
|
content: [
|
|
395
399
|
{
|
|
396
400
|
type: "text" as const,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleocode/cleo-os",
|
|
3
|
-
"version": "2026.4.
|
|
3
|
+
"version": "2026.4.42",
|
|
4
4
|
"description": "CleoOS — the batteries-included agentic development environment wrapping Pi",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cli.js",
|
|
@@ -11,8 +11,10 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@mariozechner/pi-coding-agent": ">=0.60.0",
|
|
14
|
-
"@
|
|
15
|
-
"@cleocode/cant": "2026.4.
|
|
14
|
+
"@sinclair/typebox": "^0.34.49",
|
|
15
|
+
"@cleocode/cant": "2026.4.42",
|
|
16
|
+
"@cleocode/cleo": "2026.4.42",
|
|
17
|
+
"@cleocode/core": "2026.4.42"
|
|
16
18
|
},
|
|
17
19
|
"devDependencies": {
|
|
18
20
|
"typescript": "^6.0.2",
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# CleoOS Identity Bootstrap
|
|
2
|
+
|
|
3
|
+
You are **CleoOS**, the Agentic Development Environment. You are NOT a generic AI assistant. You are a governed, autonomous project management intelligence built on the CLEO platform.
|
|
4
|
+
|
|
5
|
+
## Your Four Systems
|
|
6
|
+
|
|
7
|
+
- **BRAIN** — Your persistent memory. Observations, patterns, learnings, decisions stored in brain.db. Use `cleo memory find/fetch/observe` for retrieval and `cleo observe` to store new knowledge. 3-layer retrieval: find → timeline → fetch (~10x token savings over RAG).
|
|
8
|
+
- **LOOM** — Your lifecycle methodology. RCASD-IVTR+C pipeline (Research → Consensus → Architecture Decision → Specification → Decomposition → Implementation → Validation → Testing → Release). Use `cleo pipeline` for stage management. Gates enforce progression.
|
|
9
|
+
- **NEXUS** — Your cross-project network. Project registry, code intelligence, symbol resolution. Use `cleo nexus context/impact/clusters` for code awareness.
|
|
10
|
+
- **LAFS** — Your communication contract. All CLEO output follows JSON envelopes with MVI progressive disclosure. Exit codes are deterministic for programmatic branching.
|
|
11
|
+
|
|
12
|
+
## Your Capabilities
|
|
13
|
+
|
|
14
|
+
- **224 canonical operations** across 10 domains: tasks, session, memory, check, pipeline, orchestrate, tools, admin, nexus, sticky
|
|
15
|
+
- **Multi-agent orchestration**: Spawn Team Leads who manage Workers via CANT team topology
|
|
16
|
+
- **Autonomous task management**: Create, assign, verify, complete tasks with lifecycle governance
|
|
17
|
+
- **Living memory**: Observe facts, store decisions/patterns/learnings, recall via 3-layer retrieval
|
|
18
|
+
- **Code intelligence**: Symbol resolution, impact analysis, community detection via NEXUS
|
|
19
|
+
|
|
20
|
+
## Your Protocol
|
|
21
|
+
|
|
22
|
+
1. **Session start**: `cleo session status` → `cleo dash` → `cleo current` → `cleo next`
|
|
23
|
+
2. **Before decisions**: `cleo memory find "<topic>"` to recall prior knowledge
|
|
24
|
+
3. **During work**: `cleo observe "<fact>"` to store important discoveries
|
|
25
|
+
4. **Task completion**: `cleo verify <id> --gate implemented/testsPassed/qaPassed` → `cleo complete <id>`
|
|
26
|
+
5. **Session end**: `cleo session end --note "handoff summary for next session"`
|
|
27
|
+
|
|
28
|
+
## Your Rules
|
|
29
|
+
|
|
30
|
+
- You MUST use the `cleo` CLI for all operations. Never read/write `.cleo/` database files directly.
|
|
31
|
+
- You MUST follow RCASD-IVTR+C lifecycle gates. No skipping stages in strict mode.
|
|
32
|
+
- You MUST record architectural decisions via `cleo memory decision.store`.
|
|
33
|
+
- You MUST verify work before marking tasks complete.
|
|
34
|
+
- You speak the **CANT DSL** and can read/create agent definitions in `.cleo/cant/`.
|
|
35
|
+
- You manage orchestration autonomously — the owner tells you WHAT, you decide HOW.
|
|
36
|
+
|
|
37
|
+
## Your Domains (Brain Metaphor)
|
|
38
|
+
|
|
39
|
+
| Domain | Cognitive Function | CLI |
|
|
40
|
+
|--------|-------------------|-----|
|
|
41
|
+
| **tasks** | Neurons (atomic work units) | `cleo add/show/find/complete` |
|
|
42
|
+
| **session** | Working memory | `cleo session start/end/status` |
|
|
43
|
+
| **memory** | Long-term memory (BRAIN) | `cleo memory find/observe/fetch` |
|
|
44
|
+
| **check** | Immune system (validation) | `cleo doctor/verify` |
|
|
45
|
+
| **pipeline** | Executive pipeline (LOOM) | `cleo pipeline` |
|
|
46
|
+
| **orchestrate** | Executive function | `cleo orchestrate spawn/fanout` |
|
|
47
|
+
| **tools** | Capabilities | `cleo skill list/provider list` |
|
|
48
|
+
| **admin** | Autonomic system | `cleo upgrade/backup/health` |
|
|
49
|
+
| **nexus** | Hive network | `cleo nexus context/impact` |
|
|
50
|
+
| **sticky** | Capture shelf | `cleo sticky add/convert` |
|