@sesamespace/hivemind 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +53 -23
  2. package/dist/chunk-2I2O6X5D.js +1408 -0
  3. package/dist/chunk-2I2O6X5D.js.map +1 -0
  4. package/dist/chunk-DVR2KBL7.js +186 -0
  5. package/dist/chunk-DVR2KBL7.js.map +1 -0
  6. package/dist/chunk-MBS5A6BZ.js +132 -0
  7. package/dist/chunk-MBS5A6BZ.js.map +1 -0
  8. package/dist/chunk-NVJ424TB.js +731 -0
  9. package/dist/chunk-NVJ424TB.js.map +1 -0
  10. package/dist/chunk-RNK5Q5GR.js +44 -0
  11. package/dist/chunk-RNK5Q5GR.js.map +1 -0
  12. package/dist/chunk-XNOWVLXD.js +160 -0
  13. package/dist/chunk-XNOWVLXD.js.map +1 -0
  14. package/dist/commands/fleet.js +8 -192
  15. package/dist/commands/fleet.js.map +1 -1
  16. package/dist/commands/init.js +6 -169
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/commands/service.js +7 -0
  19. package/dist/commands/service.js.map +1 -0
  20. package/dist/commands/start.js +8 -38
  21. package/dist/commands/start.js.map +1 -1
  22. package/dist/index.js +40 -15
  23. package/dist/index.js.map +1 -1
  24. package/dist/main.js +49 -29
  25. package/dist/main.js.map +1 -1
  26. package/dist/start.js +18 -16
  27. package/dist/start.js.map +1 -1
  28. package/package.json +8 -16
  29. package/dist/__tests__/fleet-integration.test.d.ts +0 -9
  30. package/dist/__tests__/fleet-integration.test.d.ts.map +0 -1
  31. package/dist/__tests__/fleet-integration.test.js +0 -201
  32. package/dist/__tests__/fleet-integration.test.js.map +0 -1
  33. package/dist/__tests__/fleet.test.d.ts +0 -7
  34. package/dist/__tests__/fleet.test.d.ts.map +0 -1
  35. package/dist/__tests__/fleet.test.js +0 -171
  36. package/dist/__tests__/fleet.test.js.map +0 -1
  37. package/dist/__tests__/integration.test.d.ts +0 -2
  38. package/dist/__tests__/integration.test.d.ts.map +0 -1
  39. package/dist/__tests__/integration.test.js +0 -348
  40. package/dist/__tests__/integration.test.js.map +0 -1
  41. package/dist/agent.d.ts +0 -27
  42. package/dist/agent.d.ts.map +0 -1
  43. package/dist/agent.js +0 -217
  44. package/dist/agent.js.map +0 -1
  45. package/dist/commands/fleet.d.ts +0 -13
  46. package/dist/commands/fleet.d.ts.map +0 -1
  47. package/dist/commands/init.d.ts +0 -2
  48. package/dist/commands/init.d.ts.map +0 -1
  49. package/dist/commands/start.d.ts +0 -2
  50. package/dist/commands/start.d.ts.map +0 -1
  51. package/dist/config.d.ts +0 -44
  52. package/dist/config.d.ts.map +0 -1
  53. package/dist/config.js +0 -73
  54. package/dist/config.js.map +0 -1
  55. package/dist/context.d.ts +0 -50
  56. package/dist/context.d.ts.map +0 -1
  57. package/dist/context.js +0 -153
  58. package/dist/context.js.map +0 -1
  59. package/dist/fleet/fleet-manager.d.ts +0 -86
  60. package/dist/fleet/fleet-manager.d.ts.map +0 -1
  61. package/dist/fleet/fleet-manager.js +0 -298
  62. package/dist/fleet/fleet-manager.js.map +0 -1
  63. package/dist/fleet/memory-sync.d.ts +0 -91
  64. package/dist/fleet/memory-sync.d.ts.map +0 -1
  65. package/dist/fleet/memory-sync.js +0 -292
  66. package/dist/fleet/memory-sync.js.map +0 -1
  67. package/dist/fleet/primary-client.d.ts +0 -49
  68. package/dist/fleet/primary-client.d.ts.map +0 -1
  69. package/dist/fleet/primary-client.js +0 -222
  70. package/dist/fleet/primary-client.js.map +0 -1
  71. package/dist/fleet/worker-protocol.d.ts +0 -125
  72. package/dist/fleet/worker-protocol.d.ts.map +0 -1
  73. package/dist/fleet/worker-protocol.js +0 -27
  74. package/dist/fleet/worker-protocol.js.map +0 -1
  75. package/dist/fleet/worker-server.d.ts +0 -53
  76. package/dist/fleet/worker-server.d.ts.map +0 -1
  77. package/dist/fleet/worker-server.js +0 -191
  78. package/dist/fleet/worker-server.js.map +0 -1
  79. package/dist/index.d.ts +0 -26
  80. package/dist/index.d.ts.map +0 -1
  81. package/dist/llm-client.d.ts +0 -24
  82. package/dist/llm-client.d.ts.map +0 -1
  83. package/dist/llm-client.js +0 -40
  84. package/dist/llm-client.js.map +0 -1
  85. package/dist/main.d.ts +0 -3
  86. package/dist/main.d.ts.map +0 -1
  87. package/dist/memory-client.d.ts +0 -88
  88. package/dist/memory-client.d.ts.map +0 -1
  89. package/dist/memory-client.js +0 -185
  90. package/dist/memory-client.js.map +0 -1
  91. package/dist/pipeline.d.ts +0 -2
  92. package/dist/pipeline.d.ts.map +0 -1
  93. package/dist/pipeline.js +0 -125
  94. package/dist/pipeline.js.map +0 -1
  95. package/dist/prompt.d.ts +0 -6
  96. package/dist/prompt.d.ts.map +0 -1
  97. package/dist/prompt.js +0 -75
  98. package/dist/prompt.js.map +0 -1
  99. package/dist/sesame.d.ts +0 -33
  100. package/dist/sesame.d.ts.map +0 -1
  101. package/dist/sesame.js +0 -67
  102. package/dist/sesame.js.map +0 -1
  103. package/dist/start.d.ts +0 -3
  104. package/dist/start.d.ts.map +0 -1
  105. package/dist/task-engine.d.ts +0 -32
  106. package/dist/task-engine.d.ts.map +0 -1
  107. package/dist/task-engine.js +0 -80
  108. package/dist/task-engine.js.map +0 -1
  109. package/dist/worker.d.ts +0 -73
  110. package/dist/worker.d.ts.map +0 -1
  111. package/dist/worker.js +0 -279
  112. package/dist/worker.js.map +0 -1
  113. package/install.sh +0 -186
  114. package/packages/memory/Cargo.lock +0 -6480
  115. package/packages/memory/Cargo.toml +0 -21
  116. package/packages/memory/src/src/context.rs +0 -179
  117. package/packages/memory/src/src/embeddings.rs +0 -51
  118. package/packages/memory/src/src/main.rs +0 -626
  119. package/packages/memory/src/src/promotion.rs +0 -637
  120. package/packages/memory/src/src/scoring.rs +0 -131
  121. package/packages/memory/src/src/store.rs +0 -460
  122. package/packages/memory/src/src/tasks.rs +0 -321
@@ -1,13 +0,0 @@
1
- /**
2
- * CLI commands for fleet management.
3
- *
4
- * Usage:
5
- * hivemind fleet status — Show fleet dashboard
6
- * hivemind fleet add-worker <url> — Register a worker by URL
7
- * hivemind fleet remove-worker <worker-id> — Remove a worker from the fleet
8
- * hivemind fleet assign <worker-id> <context> — Assign a context to a worker
9
- * hivemind fleet migrate <context> <worker-id> — Migrate a context to another worker
10
- * hivemind fleet discover <url1> [url2] ... — Probe URLs for workers
11
- */
12
- export declare function runFleetCommand(args: string[]): Promise<void>;
13
- //# sourceMappingURL=fleet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/commands/fleet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqEH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgHnE"}
@@ -1,2 +0,0 @@
1
- export declare function runInitCommand(args: string[]): Promise<void>;
2
- //# sourceMappingURL=init.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkCA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgJlE"}
@@ -1,2 +0,0 @@
1
- export declare function runStartCommand(args: string[]): Promise<void>;
2
- //# sourceMappingURL=start.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAMA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBnE"}
package/dist/config.d.ts DELETED
@@ -1,44 +0,0 @@
1
- export interface AgentConfig {
2
- name: string;
3
- personality: string;
4
- team_charter?: string;
5
- }
6
- export interface LLMConfig {
7
- base_url: string;
8
- model: string;
9
- max_tokens: number;
10
- temperature: number;
11
- api_key?: string;
12
- }
13
- export interface MemoryConfig {
14
- daemon_url: string;
15
- top_k: number;
16
- embedding_model: string;
17
- }
18
- export interface OllamaConfig {
19
- base_url: string;
20
- }
21
- export interface SesameConfig {
22
- ws_url: string;
23
- api_url: string;
24
- api_key: string;
25
- }
26
- export interface WorkerModeConfig {
27
- enabled: boolean;
28
- primary_url: string;
29
- worker_port: number;
30
- worker_id: string;
31
- max_contexts: number;
32
- task_poll_interval_ms: number;
33
- status_report_interval_ms: number;
34
- }
35
- export interface HivemindConfig {
36
- agent: AgentConfig;
37
- llm: LLMConfig;
38
- memory: MemoryConfig;
39
- ollama: OllamaConfig;
40
- sesame: SesameConfig;
41
- worker?: WorkerModeConfig;
42
- }
43
- export declare function loadConfig(path: string): HivemindConfig;
44
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AA2BD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA4CvD"}
package/dist/config.js DELETED
@@ -1,73 +0,0 @@
1
- import { readFileSync, existsSync } from "fs";
2
- import { resolve, dirname } from "path";
3
- import { parse } from "@iarna/toml";
4
- function defaultWorkerConfig() {
5
- return {
6
- enabled: false,
7
- primary_url: "http://localhost:3000",
8
- worker_port: 3100,
9
- worker_id: `worker-${process.pid}`,
10
- max_contexts: 4,
11
- task_poll_interval_ms: 5_000,
12
- status_report_interval_ms: 15_000,
13
- };
14
- }
15
- function deepMerge(target, source) {
16
- const result = { ...target };
17
- for (const key of Object.keys(source)) {
18
- if (source[key] && typeof source[key] === "object" && !Array.isArray(source[key])
19
- && target[key] && typeof target[key] === "object") {
20
- result[key] = deepMerge(target[key], source[key]);
21
- }
22
- else if (source[key] !== undefined && source[key] !== "") {
23
- result[key] = source[key];
24
- }
25
- }
26
- return result;
27
- }
28
- export function loadConfig(path) {
29
- const raw = readFileSync(path, "utf-8");
30
- let parsed = parse(raw);
31
- // Layer: merge local.toml if it exists alongside the config
32
- const configDir = dirname(path);
33
- const localPath = resolve(configDir, "local.toml");
34
- if (existsSync(localPath)) {
35
- const localRaw = readFileSync(localPath, "utf-8");
36
- const localParsed = parse(localRaw);
37
- parsed = deepMerge(parsed, localParsed);
38
- console.log(`[config] Merged overrides from ${localPath}`);
39
- }
40
- // Allow env overrides
41
- if (process.env.AGENT_NAME) {
42
- parsed.agent.name = process.env.AGENT_NAME;
43
- }
44
- if (process.env.LLM_API_KEY) {
45
- parsed.llm.api_key = process.env.LLM_API_KEY;
46
- }
47
- if (process.env.LLM_BASE_URL) {
48
- parsed.llm.base_url = process.env.LLM_BASE_URL;
49
- }
50
- if (process.env.SESAME_API_KEY) {
51
- parsed.sesame.api_key = process.env.SESAME_API_KEY;
52
- }
53
- if (process.env.MEMORY_DAEMON_URL) {
54
- parsed.memory.daemon_url = process.env.MEMORY_DAEMON_URL;
55
- }
56
- if (process.env.WORKER_PRIMARY_URL) {
57
- if (!parsed.worker)
58
- parsed.worker = defaultWorkerConfig();
59
- parsed.worker.primary_url = process.env.WORKER_PRIMARY_URL;
60
- }
61
- if (process.env.WORKER_PORT) {
62
- if (!parsed.worker)
63
- parsed.worker = defaultWorkerConfig();
64
- parsed.worker.worker_port = parseInt(process.env.WORKER_PORT, 10);
65
- }
66
- if (process.env.WORKER_ID) {
67
- if (!parsed.worker)
68
- parsed.worker = defaultWorkerConfig();
69
- parsed.worker.worker_id = process.env.WORKER_ID;
70
- }
71
- return parsed;
72
- }
73
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts DELETED
@@ -1,50 +0,0 @@
1
- import type { MemoryClient } from "./memory-client.js";
2
- export interface ContextMetadata {
3
- name: string;
4
- description: string;
5
- created_at: string;
6
- last_active: string;
7
- }
8
- export interface ContextSwitchResult {
9
- previousContext: string | null;
10
- activeContext: string;
11
- isNew: boolean;
12
- }
13
- export declare class ContextManager {
14
- private contexts;
15
- private activeContext;
16
- private memory;
17
- constructor(memory: MemoryClient);
18
- createContext(name: string, description?: string): Promise<ContextMetadata>;
19
- deleteContext(name: string): Promise<boolean>;
20
- listContexts(): ContextMetadata[];
21
- getContext(name: string): ContextMetadata | undefined;
22
- getActiveContext(): string;
23
- switchContext(name: string): ContextSwitchResult;
24
- /**
25
- * Parse a message and determine if it's a context switch command.
26
- * Returns the context name if a switch is detected, null otherwise.
27
- */
28
- parseContextSwitch(message: string): string | null;
29
- /**
30
- * Infer context from message content by checking known context names.
31
- * Returns the best matching context or current active context.
32
- */
33
- inferContext(message: string): string;
34
- /**
35
- * Route a message: check for explicit switch, then infer context.
36
- * Returns the resolved context name and whether a switch happened.
37
- */
38
- routeMessage(message: string): {
39
- context: string;
40
- switched: boolean;
41
- switchedTo?: string;
42
- };
43
- /**
44
- * Returns contexts that should be searched: active context + global.
45
- */
46
- getSearchContexts(): string[];
47
- hasContext(name: string): boolean;
48
- private touchContext;
49
- }
50
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CAChB;AASD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;IAW1B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,OAAO,CAAC,eAAe,CAAC;IAwBvE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBnD,YAAY,IAAI,eAAe,EAAE;IAIjC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIrD,gBAAgB,IAAI,MAAM;IAI1B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB;IAmBhD;;;OAGG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUlD;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAWrC;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAmB1F;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAQ7B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,OAAO,CAAC,YAAY;CAMrB"}
package/dist/context.js DELETED
@@ -1,153 +0,0 @@
1
- const SWITCH_PATTERNS = [
2
- /^switch\s+to\s+(\S+)/i,
3
- /^context:\s*(\S+)/i,
4
- /^@(\S+)\s/,
5
- /^working\s+on\s+(\S+)/i,
6
- ];
7
- export class ContextManager {
8
- contexts = new Map();
9
- activeContext = "global";
10
- memory;
11
- constructor(memory) {
12
- this.memory = memory;
13
- // Global context always exists
14
- this.contexts.set("global", {
15
- name: "global",
16
- description: "Global context — identity, preferences, cross-cutting knowledge",
17
- created_at: new Date().toISOString(),
18
- last_active: new Date().toISOString(),
19
- });
20
- }
21
- async createContext(name, description = "") {
22
- if (this.contexts.has(name)) {
23
- return this.contexts.get(name);
24
- }
25
- const metadata = {
26
- name,
27
- description,
28
- created_at: new Date().toISOString(),
29
- last_active: new Date().toISOString(),
30
- };
31
- this.contexts.set(name, metadata);
32
- // Register context with memory daemon
33
- try {
34
- await this.memory.createContext(name, description);
35
- }
36
- catch (err) {
37
- console.error(`Failed to register context '${name}' with daemon:`, err.message);
38
- }
39
- return metadata;
40
- }
41
- async deleteContext(name) {
42
- if (name === "global") {
43
- console.error("Cannot delete global context");
44
- return false;
45
- }
46
- if (!this.contexts.has(name)) {
47
- return false;
48
- }
49
- this.contexts.delete(name);
50
- if (this.activeContext === name) {
51
- this.activeContext = "global";
52
- }
53
- try {
54
- await this.memory.deleteContext(name);
55
- }
56
- catch (err) {
57
- console.error(`Failed to delete context '${name}' from daemon:`, err.message);
58
- }
59
- return true;
60
- }
61
- listContexts() {
62
- return Array.from(this.contexts.values());
63
- }
64
- getContext(name) {
65
- return this.contexts.get(name);
66
- }
67
- getActiveContext() {
68
- return this.activeContext;
69
- }
70
- switchContext(name) {
71
- const previousContext = this.activeContext;
72
- const isNew = !this.contexts.has(name);
73
- if (isNew) {
74
- this.contexts.set(name, {
75
- name,
76
- description: "",
77
- created_at: new Date().toISOString(),
78
- last_active: new Date().toISOString(),
79
- });
80
- }
81
- this.activeContext = name;
82
- this.touchContext(name);
83
- return { previousContext, activeContext: name, isNew };
84
- }
85
- /**
86
- * Parse a message and determine if it's a context switch command.
87
- * Returns the context name if a switch is detected, null otherwise.
88
- */
89
- parseContextSwitch(message) {
90
- for (const pattern of SWITCH_PATTERNS) {
91
- const match = message.match(pattern);
92
- if (match) {
93
- return match[1].toLowerCase();
94
- }
95
- }
96
- return null;
97
- }
98
- /**
99
- * Infer context from message content by checking known context names.
100
- * Returns the best matching context or current active context.
101
- */
102
- inferContext(message) {
103
- const lower = message.toLowerCase();
104
- for (const [name] of this.contexts) {
105
- if (name === "global")
106
- continue;
107
- if (lower.includes(name.toLowerCase())) {
108
- return name;
109
- }
110
- }
111
- return this.activeContext;
112
- }
113
- /**
114
- * Route a message: check for explicit switch, then infer context.
115
- * Returns the resolved context name and whether a switch happened.
116
- */
117
- routeMessage(message) {
118
- // Check for explicit switch command
119
- const switchTarget = this.parseContextSwitch(message);
120
- if (switchTarget) {
121
- const result = this.switchContext(switchTarget);
122
- return { context: switchTarget, switched: true, switchedTo: result.activeContext };
123
- }
124
- // Infer from content
125
- const inferred = this.inferContext(message);
126
- if (inferred !== this.activeContext) {
127
- this.touchContext(inferred);
128
- return { context: inferred, switched: false };
129
- }
130
- this.touchContext(this.activeContext);
131
- return { context: this.activeContext, switched: false };
132
- }
133
- /**
134
- * Returns contexts that should be searched: active context + global.
135
- */
136
- getSearchContexts() {
137
- const contexts = [this.activeContext];
138
- if (this.activeContext !== "global") {
139
- contexts.push("global");
140
- }
141
- return contexts;
142
- }
143
- hasContext(name) {
144
- return this.contexts.has(name);
145
- }
146
- touchContext(name) {
147
- const ctx = this.contexts.get(name);
148
- if (ctx) {
149
- ctx.last_active = new Date().toISOString();
150
- }
151
- }
152
- }
153
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -1,86 +0,0 @@
1
- /**
2
- * Fleet Manager — high-level orchestration layer on top of PrimaryClient.
3
- *
4
- * Provides:
5
- * - Worker provisioning (register by URL)
6
- * - Context assignment and migration between workers
7
- * - Aggregate fleet status / dashboard data
8
- * - Worker discovery and removal
9
- */
10
- import { PrimaryClient } from "./primary-client.js";
11
- import type { WorkerInfo, WorkerHealthStatus, WorkerCapabilities, ContextAssignResponse, WorkerStatus, WorkerActivity } from "./worker-protocol.js";
12
- export interface WorkerSummary {
13
- id: string;
14
- url: string;
15
- health: WorkerHealthStatus;
16
- contexts: string[];
17
- current_task: string | null;
18
- activity: WorkerActivity;
19
- uptime_seconds: number | null;
20
- capabilities: WorkerCapabilities;
21
- last_heartbeat: string;
22
- }
23
- export interface FleetDashboard {
24
- total_workers: number;
25
- healthy: number;
26
- degraded: number;
27
- unreachable: number;
28
- total_contexts: number;
29
- workers: WorkerSummary[];
30
- unassigned_contexts: string[];
31
- generated_at: string;
32
- }
33
- export interface MigrationResult {
34
- context_name: string;
35
- from_worker: string;
36
- to_worker: string;
37
- success: boolean;
38
- reason?: string;
39
- }
40
- export declare class FleetManager {
41
- private primary;
42
- private latestHealth;
43
- private latestStatus;
44
- private knownContexts;
45
- constructor(primary?: PrimaryClient);
46
- getPrimary(): PrimaryClient;
47
- /**
48
- * Register a new worker by URL. Probes the worker's health endpoint
49
- * to discover capabilities, then registers it with the Primary.
50
- */
51
- addWorker(url: string): Promise<WorkerInfo>;
52
- /** Remove a worker from the fleet, unassigning its contexts first. */
53
- removeWorker(workerId: string): Promise<boolean>;
54
- /** Assign a context to a specific worker. */
55
- assignContext(workerId: string, contextName: string, description?: string): Promise<ContextAssignResponse>;
56
- /** Migrate a context from one worker to another. */
57
- migrateContext(contextName: string, toWorkerId: string): Promise<MigrationResult>;
58
- /** Refresh health for all workers. */
59
- refreshHealth(): Promise<void>;
60
- /** Record a status report (called when worker POSTs status to Primary). */
61
- recordStatus(workerId: string, status: WorkerStatus): void;
62
- /** Get the full fleet dashboard. */
63
- getDashboard(): Promise<FleetDashboard>;
64
- /** Get a quick status summary without refreshing health. */
65
- getStatusSnapshot(): FleetDashboard;
66
- /**
67
- * Scan a list of candidate URLs for workers. Returns the URLs
68
- * that responded to a health probe. Useful for auto-detecting
69
- * workers on a local network.
70
- */
71
- discoverWorkers(candidateUrls: string[]): Promise<string[]>;
72
- /**
73
- * Scan a subnet-style range for workers. Generates URLs for
74
- * a base IP with ports and probes them.
75
- * Example: scanSubnet("192.168.1", [10, 11, 12], 3100)
76
- */
77
- scanSubnet(baseIp: string, hostIds: number[], port: number): Promise<string[]>;
78
- /** Track a context name so it appears in unassigned lists. */
79
- registerContext(contextName: string): void;
80
- /** Start health polling (delegates to PrimaryClient). */
81
- startHealthPolling(intervalMs?: number): void;
82
- /** Stop health polling. */
83
- stopHealthPolling(): void;
84
- private probeWorker;
85
- }
86
- //# sourceMappingURL=fleet-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fleet-manager.d.ts","sourceRoot":"","sources":["../../src/fleet/fleet-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKpD,OAAO,KAAK,EACV,UAAU,EAEV,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACf,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,kBAAkB,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAgD;IACpE,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,aAAa,CAA0B;gBAEnC,OAAO,CAAC,EAAE,aAAa;IAInC,UAAU,IAAI,aAAa;IAM3B;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiBjD,sEAAsE;IAChE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IActD,6CAA6C;IACvC,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,WAAW,SAAK,GACf,OAAO,CAAC,qBAAqB,CAAC;IAQjC,oDAAoD;IAC9C,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC;IAiD3B,sCAAsC;IAChC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBpC,2EAA2E;IAC3E,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAI1D,oCAAoC;IAC9B,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAiD7C,4DAA4D;IAC5D,iBAAiB,IAAI,cAAc;IAgDnC;;;;OAIG;IACG,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0BjE;;;;OAIG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,EAAE,CAAC;IAKpB,8DAA8D;IAC9D,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI1C,yDAAyD;IACzD,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7C,2BAA2B;IAC3B,iBAAiB,IAAI,IAAI;YAMX,WAAW;CA+B1B"}