@femtomc/mu-agent 26.2.37 → 26.2.39

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/README.md CHANGED
@@ -1,12 +1,11 @@
1
1
  # @femtomc/mu-agent
2
2
 
3
- Shared mu agent runtime package.
3
+ Shared agent runtime package for mu.
4
4
 
5
- This package centralizes reusable agent logic that was previously split across
6
- `@femtomc/mu-control-plane` and `@femtomc/mu-orchestrator`, including:
5
+ This package provides reusable runtime pieces for chat, orchestration, and serve-mode tooling, including:
7
6
 
8
- - Messaging meta-agent runtime + backend
9
- - Command context resolution for meta-agent command proposals
7
+ - Messaging operator runtime + backend
8
+ - Command context resolution for operator command proposals
10
9
  - Role prompt loading/defaults for orchestrator + worker agents
11
10
  - pi CLI/SDK orchestration backends and resource loader helpers
12
11
  - Prompt/template helpers used by orchestration roles
@@ -55,7 +54,7 @@ Current stack:
55
54
  - `/mu-events watch on|off` — toggle event watch widget
56
55
  - `/mu-brand on|off|toggle` — enable/disable UI branding
57
56
 
58
- ## Tools (agent/meta-agent-facing)
57
+ ## Tools (agent/operator-facing)
59
58
 
60
59
  - `mu_status()`
61
60
  - High-level server status.
@@ -2,7 +2,6 @@ export { brandingExtension } from "./branding.js";
2
2
  export { eventLogExtension } from "./event-log.js";
3
3
  export { messagingSetupExtension } from "./messaging-setup.js";
4
4
  export { serverToolsExtension } from "./server-tools.js";
5
- import { brandingExtension } from "./branding.js";
6
5
  /**
7
6
  * Serve-mode extension module paths.
8
7
  *
@@ -11,11 +10,4 @@ import { brandingExtension } from "./branding.js";
11
10
  * anonymous inline factories.
12
11
  */
13
12
  export declare const serveExtensionPaths: string[];
14
- /**
15
- * Legacy serve-mode extension factories.
16
- *
17
- * Kept for compatibility in cases where callers need programmatic inline
18
- * factories, but path-based loading is preferred.
19
- */
20
- export declare const serveExtensionFactories: (typeof brandingExtension)[];
21
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAYlD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAE/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,8BAKnC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AASzD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAE/B,CAAC"}
@@ -2,10 +2,6 @@ export { brandingExtension } from "./branding.js";
2
2
  export { eventLogExtension } from "./event-log.js";
3
3
  export { messagingSetupExtension } from "./messaging-setup.js";
4
4
  export { serverToolsExtension } from "./server-tools.js";
5
- import { brandingExtension } from "./branding.js";
6
- import { eventLogExtension } from "./event-log.js";
7
- import { messagingSetupExtension } from "./messaging-setup.js";
8
- import { serverToolsExtension } from "./server-tools.js";
9
5
  const SERVE_EXTENSION_MODULE_BASENAMES = ["branding", "server-tools", "event-log", "messaging-setup"];
10
6
  const RUNTIME_EXTENSION = import.meta.url.endsWith(".ts") ? "ts" : "js";
11
7
  function resolveBundledExtensionPath(moduleBasename) {
@@ -19,15 +15,3 @@ function resolveBundledExtensionPath(moduleBasename) {
19
15
  * anonymous inline factories.
20
16
  */
21
17
  export const serveExtensionPaths = SERVE_EXTENSION_MODULE_BASENAMES.map((moduleBasename) => resolveBundledExtensionPath(moduleBasename));
22
- /**
23
- * Legacy serve-mode extension factories.
24
- *
25
- * Kept for compatibility in cases where callers need programmatic inline
26
- * factories, but path-based loading is preferred.
27
- */
28
- export const serveExtensionFactories = [
29
- brandingExtension,
30
- serverToolsExtension,
31
- eventLogExtension,
32
- messagingSetupExtension,
33
- ];
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * mu-server-tools — Serve-mode tools for querying mu server state.
3
3
  *
4
- * This is the core extension the meta-agent relies on for repo introspection.
4
+ * This is the core extension the operator relies on for repo introspection.
5
5
  */
6
6
  import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
7
7
  export declare function serverToolsExtension(pi: ExtensionAPI): void;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * mu-server-tools — Serve-mode tools for querying mu server state.
3
3
  *
4
- * This is the core extension the meta-agent relies on for repo introspection.
4
+ * This is the core extension the operator relies on for repo introspection.
5
5
  */
6
6
  import { StringEnum } from "@mariozechner/pi-ai";
7
7
  import { Type } from "@sinclair/typebox";
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from "./command_context.js";
2
2
  export * from "./extensions/index.js";
3
- export * from "./meta_agent.js";
3
+ export * from "./operator.js";
4
4
  export * from "./mu_roles.js";
5
5
  export * from "./pi_backend.js";
6
6
  export * from "./pi_sdk_backend.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from "./command_context.js";
2
2
  export * from "./extensions/index.js";
3
- export * from "./meta_agent.js";
3
+ export * from "./operator.js";
4
4
  export * from "./mu_roles.js";
5
5
  export * from "./pi_backend.js";
6
6
  export * from "./pi_sdk_backend.js";
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { CommandContextResolver } from "./command_context.js";
3
- export type MessagingMetaInboundEnvelope = {
3
+ export type MessagingOperatorInboundEnvelope = {
4
4
  channel: string;
5
5
  channel_tenant_id: string;
6
6
  channel_conversation_id: string;
@@ -11,13 +11,13 @@ export type MessagingMetaInboundEnvelope = {
11
11
  target_id: string;
12
12
  metadata: Record<string, unknown>;
13
13
  };
14
- export type MessagingMetaIdentityBinding = {
14
+ export type MessagingOperatorIdentityBinding = {
15
15
  binding_id: string;
16
16
  assurance_tier: string;
17
17
  };
18
- type InboundEnvelope = MessagingMetaInboundEnvelope;
19
- type IdentityBinding = MessagingMetaIdentityBinding;
20
- export declare const MetaApprovedCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
18
+ type InboundEnvelope = MessagingOperatorInboundEnvelope;
19
+ type IdentityBinding = MessagingOperatorIdentityBinding;
20
+ export declare const OperatorApprovedCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
21
21
  kind: z.ZodLiteral<"status">;
22
22
  }, z.core.$strip>, z.ZodObject<{
23
23
  kind: z.ZodLiteral<"ready">;
@@ -39,8 +39,8 @@ export declare const MetaApprovedCommandSchema: z.ZodDiscriminatedUnion<[z.ZodOb
39
39
  prompt: z.ZodString;
40
40
  max_steps: z.ZodOptional<z.ZodNumber>;
41
41
  }, z.core.$strip>], "kind">;
42
- export type MetaApprovedCommand = z.infer<typeof MetaApprovedCommandSchema>;
43
- export declare const MetaAgentBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
42
+ export type OperatorApprovedCommand = z.infer<typeof OperatorApprovedCommandSchema>;
43
+ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
44
44
  kind: z.ZodLiteral<"respond">;
45
45
  message: z.ZodString;
46
46
  }, z.core.$strip>, z.ZodObject<{
@@ -68,32 +68,32 @@ export declare const MetaAgentBackendTurnResultSchema: z.ZodDiscriminatedUnion<[
68
68
  max_steps: z.ZodOptional<z.ZodNumber>;
69
69
  }, z.core.$strip>], "kind">;
70
70
  }, z.core.$strip>], "kind">;
71
- export type MetaAgentBackendTurnResult = z.infer<typeof MetaAgentBackendTurnResultSchema>;
72
- export type MetaAgentBackendTurnInput = {
71
+ export type OperatorBackendTurnResult = z.infer<typeof OperatorBackendTurnResultSchema>;
72
+ export type OperatorBackendTurnInput = {
73
73
  sessionId: string;
74
74
  turnId: string;
75
75
  inbound: InboundEnvelope;
76
76
  binding: IdentityBinding;
77
77
  };
78
- export interface MessagingMetaAgentBackend {
79
- runTurn(input: MetaAgentBackendTurnInput): Promise<MetaAgentBackendTurnResult>;
78
+ export interface MessagingOperatorBackend {
79
+ runTurn(input: OperatorBackendTurnInput): Promise<OperatorBackendTurnResult>;
80
80
  }
81
- export type MetaAgentDecision = {
81
+ export type OperatorDecision = {
82
82
  kind: "response";
83
83
  message: string;
84
- metaSessionId: string;
85
- metaTurnId: string;
84
+ operatorSessionId: string;
85
+ operatorTurnId: string;
86
86
  } | {
87
87
  kind: "command";
88
88
  commandText: string;
89
- metaSessionId: string;
90
- metaTurnId: string;
89
+ operatorSessionId: string;
90
+ operatorTurnId: string;
91
91
  } | {
92
92
  kind: "reject";
93
- reason: "meta_agent_disabled" | "meta_agent_action_disallowed" | "meta_agent_invalid_output" | "context_missing" | "context_ambiguous" | "context_unauthorized" | "cli_validation_failed";
93
+ reason: "operator_disabled" | "operator_action_disallowed" | "operator_invalid_output" | "context_missing" | "context_ambiguous" | "context_unauthorized" | "cli_validation_failed";
94
94
  details?: string;
95
- metaSessionId: string;
96
- metaTurnId: string;
95
+ operatorSessionId: string;
96
+ operatorTurnId: string;
97
97
  };
98
98
  export type ApprovedCommandBrokerOpts = {
99
99
  contextResolver?: CommandContextResolver;
@@ -103,47 +103,46 @@ export declare class ApprovedCommandBroker {
103
103
  #private;
104
104
  constructor(opts?: ApprovedCommandBrokerOpts);
105
105
  approve(opts: {
106
- proposal: MetaApprovedCommand;
106
+ proposal: OperatorApprovedCommand;
107
107
  inbound: InboundEnvelope;
108
108
  }): {
109
109
  kind: "approved";
110
110
  commandText: string;
111
111
  } | {
112
112
  kind: "reject";
113
- reason: "meta_agent_action_disallowed" | "context_missing" | "context_ambiguous" | "context_unauthorized" | "cli_validation_failed";
113
+ reason: "operator_action_disallowed" | "context_missing" | "context_ambiguous" | "context_unauthorized" | "cli_validation_failed";
114
114
  details?: string;
115
115
  };
116
116
  }
117
- export type MessagingMetaAgentRuntimeOpts = {
118
- backend: MessagingMetaAgentBackend;
117
+ export type MessagingOperatorRuntimeOpts = {
118
+ backend: MessagingOperatorBackend;
119
119
  broker?: ApprovedCommandBroker;
120
120
  enabled?: boolean;
121
121
  enabledChannels?: readonly string[];
122
122
  sessionIdFactory?: () => string;
123
123
  turnIdFactory?: () => string;
124
124
  };
125
- export declare class MessagingMetaAgentRuntime {
125
+ export declare class MessagingOperatorRuntime {
126
126
  #private;
127
- constructor(opts: MessagingMetaAgentRuntimeOpts);
127
+ constructor(opts: MessagingOperatorRuntimeOpts);
128
128
  handleInbound(opts: {
129
129
  inbound: InboundEnvelope;
130
130
  binding: IdentityBinding;
131
- }): Promise<MetaAgentDecision>;
131
+ }): Promise<OperatorDecision>;
132
132
  }
133
- export type PiMessagingMetaAgentBackendOpts = {
133
+ export type PiMessagingOperatorBackendOpts = {
134
134
  provider?: string;
135
135
  model?: string;
136
136
  thinking?: string;
137
137
  systemPrompt?: string;
138
138
  timeoutMs?: number;
139
139
  extensionPaths?: string[];
140
- extensionFactories?: Array<(pi: any) => void | Promise<void>>;
141
140
  };
142
141
  export declare const DEFAULT_CHAT_SYSTEM_PROMPT: string;
143
- export declare class PiMessagingMetaAgentBackend implements MessagingMetaAgentBackend {
142
+ export declare class PiMessagingOperatorBackend implements MessagingOperatorBackend {
144
143
  #private;
145
- constructor(opts?: PiMessagingMetaAgentBackendOpts);
146
- runTurn(input: MetaAgentBackendTurnInput): Promise<MetaAgentBackendTurnResult>;
144
+ constructor(opts?: PiMessagingOperatorBackendOpts);
145
+ runTurn(input: OperatorBackendTurnInput): Promise<OperatorBackendTurnResult>;
147
146
  }
148
147
  export {};
149
- //# sourceMappingURL=meta_agent.d.ts.map
148
+ //# sourceMappingURL=operator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../src/operator.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { z } from "zod";
3
3
  import { CommandContextResolver } from "./command_context.js";
4
4
  import { createMuSession } from "./session_factory.js";
5
5
  const SAFE_RESPONSE_RE = /^[\s\S]{1,2000}$/;
6
- export const MetaApprovedCommandSchema = z.discriminatedUnion("kind", [
6
+ export const OperatorApprovedCommandSchema = z.discriminatedUnion("kind", [
7
7
  z.object({ kind: z.literal("status") }),
8
8
  z.object({ kind: z.literal("ready") }),
9
9
  z.object({ kind: z.literal("issue_list") }),
@@ -24,9 +24,9 @@ export const MetaApprovedCommandSchema = z.discriminatedUnion("kind", [
24
24
  max_steps: z.number().int().min(1).max(500).optional(),
25
25
  }),
26
26
  ]);
27
- export const MetaAgentBackendTurnResultSchema = z.discriminatedUnion("kind", [
27
+ export const OperatorBackendTurnResultSchema = z.discriminatedUnion("kind", [
28
28
  z.object({ kind: z.literal("respond"), message: z.string().trim().min(1).max(2000) }),
29
- z.object({ kind: z.literal("command"), command: MetaApprovedCommandSchema }),
29
+ z.object({ kind: z.literal("command"), command: OperatorApprovedCommandSchema }),
30
30
  ]);
31
31
  function splitPromptIntoTokens(prompt) {
32
32
  return prompt
@@ -77,7 +77,7 @@ export class ApprovedCommandBroker {
77
77
  }
78
78
  case "run_resume": {
79
79
  if (!this.#runTriggersEnabled) {
80
- return { kind: "reject", reason: "meta_agent_action_disallowed", details: "run triggers disabled" };
80
+ return { kind: "reject", reason: "operator_action_disallowed", details: "run triggers disabled" };
81
81
  }
82
82
  commandKey = "run resume";
83
83
  args = [];
@@ -91,14 +91,14 @@ export class ApprovedCommandBroker {
91
91
  }
92
92
  case "run_start": {
93
93
  if (!this.#runTriggersEnabled) {
94
- return { kind: "reject", reason: "meta_agent_action_disallowed", details: "run triggers disabled" };
94
+ return { kind: "reject", reason: "operator_action_disallowed", details: "run triggers disabled" };
95
95
  }
96
96
  commandKey = "run start";
97
97
  args = splitPromptIntoTokens(opts.proposal.prompt);
98
98
  break;
99
99
  }
100
100
  default:
101
- return { kind: "reject", reason: "meta_agent_action_disallowed" };
101
+ return { kind: "reject", reason: "operator_action_disallowed" };
102
102
  }
103
103
  const resolved = this.#contextResolver.resolve({
104
104
  repoRoot: opts.inbound.repo_root,
@@ -122,7 +122,7 @@ export class ApprovedCommandBroker {
122
122
  }
123
123
  }
124
124
  function defaultSessionId() {
125
- return `meta-${randomUUID()}`;
125
+ return `operator-${randomUUID()}`;
126
126
  }
127
127
  function defaultTurnId() {
128
128
  return `turn-${randomUUID()}`;
@@ -130,7 +130,7 @@ function defaultTurnId() {
130
130
  function conversationKey(inbound, binding) {
131
131
  return `${inbound.channel}:${inbound.channel_tenant_id}:${inbound.channel_conversation_id}:${binding.binding_id}`;
132
132
  }
133
- export class MessagingMetaAgentRuntime {
133
+ export class MessagingOperatorRuntime {
134
134
  #backend;
135
135
  #broker;
136
136
  #enabled;
@@ -162,22 +162,22 @@ export class MessagingMetaAgentRuntime {
162
162
  if (!this.#enabled) {
163
163
  return {
164
164
  kind: "reject",
165
- reason: "meta_agent_disabled",
166
- metaSessionId: sessionId,
167
- metaTurnId: turnId,
165
+ reason: "operator_disabled",
166
+ operatorSessionId: sessionId,
167
+ operatorTurnId: turnId,
168
168
  };
169
169
  }
170
170
  if (this.#enabledChannels && !this.#enabledChannels.has(opts.inbound.channel.toLowerCase())) {
171
171
  return {
172
172
  kind: "reject",
173
- reason: "meta_agent_disabled",
174
- metaSessionId: sessionId,
175
- metaTurnId: turnId,
173
+ reason: "operator_disabled",
174
+ operatorSessionId: sessionId,
175
+ operatorTurnId: turnId,
176
176
  };
177
177
  }
178
178
  let backendResult;
179
179
  try {
180
- backendResult = MetaAgentBackendTurnResultSchema.parse(await this.#backend.runTurn({
180
+ backendResult = OperatorBackendTurnResultSchema.parse(await this.#backend.runTurn({
181
181
  sessionId,
182
182
  turnId,
183
183
  inbound: opts.inbound,
@@ -187,10 +187,10 @@ export class MessagingMetaAgentRuntime {
187
187
  catch (err) {
188
188
  return {
189
189
  kind: "reject",
190
- reason: "meta_agent_invalid_output",
191
- details: err instanceof Error ? err.message : "meta_agent_backend_error",
192
- metaSessionId: sessionId,
193
- metaTurnId: turnId,
190
+ reason: "operator_invalid_output",
191
+ details: err instanceof Error ? err.message : "operator_backend_error",
192
+ operatorSessionId: sessionId,
193
+ operatorTurnId: turnId,
194
194
  };
195
195
  }
196
196
  if (backendResult.kind === "respond") {
@@ -198,17 +198,17 @@ export class MessagingMetaAgentRuntime {
198
198
  if (!SAFE_RESPONSE_RE.test(message)) {
199
199
  return {
200
200
  kind: "reject",
201
- reason: "meta_agent_invalid_output",
201
+ reason: "operator_invalid_output",
202
202
  details: "invalid response payload",
203
- metaSessionId: sessionId,
204
- metaTurnId: turnId,
203
+ operatorSessionId: sessionId,
204
+ operatorTurnId: turnId,
205
205
  };
206
206
  }
207
207
  return {
208
208
  kind: "response",
209
209
  message,
210
- metaSessionId: sessionId,
211
- metaTurnId: turnId,
210
+ operatorSessionId: sessionId,
211
+ operatorTurnId: turnId,
212
212
  };
213
213
  }
214
214
  const approved = this.#broker.approve({
@@ -220,15 +220,15 @@ export class MessagingMetaAgentRuntime {
220
220
  kind: "reject",
221
221
  reason: approved.reason,
222
222
  details: approved.details,
223
- metaSessionId: sessionId,
224
- metaTurnId: turnId,
223
+ operatorSessionId: sessionId,
224
+ operatorTurnId: turnId,
225
225
  };
226
226
  }
227
227
  return {
228
228
  kind: "command",
229
229
  commandText: approved.commandText,
230
- metaSessionId: sessionId,
231
- metaTurnId: turnId,
230
+ operatorSessionId: sessionId,
231
+ operatorTurnId: turnId,
232
232
  };
233
233
  }
234
234
  }
@@ -243,7 +243,7 @@ export const DEFAULT_CHAT_SYSTEM_PROMPT = [
243
243
  "",
244
244
  "Be concise, practical, and actionable.",
245
245
  ].join("\n");
246
- const DEFAULT_META_SYSTEM_PROMPT = [
246
+ const DEFAULT_OPERATOR_SYSTEM_PROMPT = [
247
247
  "You are mu, an AI assistant for the mu orchestration platform.",
248
248
  "You have tools to interact with the mu server: mu_status, mu_control_plane, mu_issues, mu_forum, mu_events.",
249
249
  "Use these tools to answer questions about repository state, issues, events, and control-plane runtime state.",
@@ -253,7 +253,7 @@ const DEFAULT_META_SYSTEM_PROMPT = [
253
253
  "Be concise, practical, and actionable.",
254
254
  "Respond in plain text — do not wrap in JSON.",
255
255
  ].join("\n");
256
- function buildMetaPrompt(input) {
256
+ function buildOperatorPrompt(input) {
257
257
  return [
258
258
  `[Messaging context]`,
259
259
  `channel: ${input.inbound.channel}`,
@@ -263,22 +263,20 @@ function buildMetaPrompt(input) {
263
263
  `User message: ${input.inbound.command_text}`,
264
264
  ].join("\n");
265
265
  }
266
- export class PiMessagingMetaAgentBackend {
266
+ export class PiMessagingOperatorBackend {
267
267
  #provider;
268
268
  #model;
269
269
  #thinking;
270
270
  #systemPrompt;
271
271
  #timeoutMs;
272
272
  #extensionPaths;
273
- #extensionFactories;
274
273
  constructor(opts = {}) {
275
274
  this.#provider = opts.provider;
276
275
  this.#model = opts.model;
277
276
  this.#thinking = opts.thinking ?? "minimal";
278
- this.#systemPrompt = opts.systemPrompt ?? DEFAULT_META_SYSTEM_PROMPT;
277
+ this.#systemPrompt = opts.systemPrompt ?? DEFAULT_OPERATOR_SYSTEM_PROMPT;
279
278
  this.#timeoutMs = Math.max(1_000, Math.trunc(opts.timeoutMs ?? 90_000));
280
279
  this.#extensionPaths = opts.extensionPaths ?? [];
281
- this.#extensionFactories = opts.extensionFactories ?? [];
282
280
  }
283
281
  async runTurn(input) {
284
282
  const session = await createMuSession({
@@ -288,7 +286,6 @@ export class PiMessagingMetaAgentBackend {
288
286
  model: this.#model,
289
287
  thinking: this.#thinking,
290
288
  extensionPaths: this.#extensionPaths,
291
- extensionFactories: this.#extensionFactories,
292
289
  });
293
290
  try {
294
291
  await session.bindExtensions({
@@ -325,11 +322,11 @@ export class PiMessagingMetaAgentBackend {
325
322
  }
326
323
  });
327
324
  const timeoutPromise = new Promise((_, reject) => {
328
- setTimeout(() => reject(new Error("pi meta-agent timeout")), this.#timeoutMs);
325
+ setTimeout(() => reject(new Error("pi operator timeout")), this.#timeoutMs);
329
326
  });
330
327
  try {
331
328
  await Promise.race([
332
- session.prompt(buildMetaPrompt(input), { expandPromptTemplates: false }),
329
+ session.prompt(buildOperatorPrompt(input), { expandPromptTemplates: false }),
333
330
  timeoutPromise,
334
331
  ]);
335
332
  }
@@ -339,7 +336,7 @@ export class PiMessagingMetaAgentBackend {
339
336
  // The agent now responds naturally with tools — always return as respond
340
337
  const message = assistantText.trim();
341
338
  if (!message) {
342
- throw new Error("meta_agent_empty_response");
339
+ throw new Error("operator_empty_response");
343
340
  }
344
341
  return { kind: "respond", message: message.slice(0, 2000) };
345
342
  }
@@ -24,7 +24,6 @@ export type CreateMuResourceLoaderOpts = {
24
24
  settingsManager?: SettingsManager;
25
25
  additionalExtensionPaths?: string[];
26
26
  additionalSkillPaths?: string[];
27
- extensionFactories?: import("@mariozechner/pi-coding-agent").ExtensionFactory[];
28
27
  };
29
28
  export declare function createMuResourceLoader(opts: CreateMuResourceLoaderOpts): DefaultResourceLoader;
30
29
  //# sourceMappingURL=pi_sdk_backend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi_sdk_backend.d.ts","sourceRoot":"","sources":["../src/pi_sdk_backend.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EACN,WAAW,EAOX,qBAAqB,EAErB,eAAe,EACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGrE;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,kBAAkB,CAAC,EAAE,MAAM,GACzB,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CA6BxB;AAED;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,aAAa;IAC3C,GAAG,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAiGhD;AAED,MAAM,MAAM,0BAA0B,GAAG;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,+BAA+B,EAAE,gBAAgB,EAAE,CAAC;CAChF,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAAG,qBAAqB,CAwB9F"}
1
+ {"version":3,"file":"pi_sdk_backend.d.ts","sourceRoot":"","sources":["../src/pi_sdk_backend.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EACN,WAAW,EAOX,qBAAqB,EAErB,eAAe,EACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGrE;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,kBAAkB,CAAC,EAAE,MAAM,GACzB,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CA6BxB;AAED;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,aAAa;IAC3C,GAAG,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAiGhD;AAED,MAAM,MAAM,0BAA0B,GAAG;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAAG,qBAAqB,CAuB9F"}
@@ -145,7 +145,6 @@ export function createMuResourceLoader(opts) {
145
145
  settingsManager: opts.settingsManager ?? SettingsManager.inMemory(),
146
146
  additionalExtensionPaths: opts.additionalExtensionPaths,
147
147
  additionalSkillPaths: [...skillPaths],
148
- extensionFactories: opts.extensionFactories,
149
148
  systemPromptOverride: (_base) => opts.systemPrompt,
150
149
  agentsFilesOverride: (base) => ({
151
150
  agentsFiles: base.agentsFiles.filter((f) => basename(f.path) === "AGENTS.md"),
package/dist/prompt.js CHANGED
@@ -13,7 +13,7 @@ function stripQuotes(s) {
13
13
  }
14
14
  function parseSimpleYamlFrontmatter(text) {
15
15
  // We only need a small subset: flat `key: value` mappings.
16
- // If parsing fails, we return {} (mirrors Python behavior).
16
+ // If parsing fails, return empty metadata.
17
17
  const out = {};
18
18
  const lines = text.split(/\r?\n/);
19
19
  for (const rawLine of lines) {
@@ -1,4 +1,3 @@
1
- import type { ExtensionFactory } from "@mariozechner/pi-coding-agent";
2
1
  export type CreateMuSessionOpts = {
3
2
  cwd: string;
4
3
  systemPrompt?: string;
@@ -6,7 +5,6 @@ export type CreateMuSessionOpts = {
6
5
  model?: string;
7
6
  thinking?: string;
8
7
  extensionPaths?: string[];
9
- extensionFactories?: ExtensionFactory[];
10
8
  };
11
9
  export type MuSession = {
12
10
  subscribe: (listener: (event: any) => void) => () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"session_factory.d.ts","sourceRoot":"","sources":["../src/session_factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,MAAM,MAAM,mBAAmB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACvB,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAC1D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;CAC5C,CAAC;AAEF,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,CAmCnF"}
1
+ {"version":3,"file":"session_factory.d.ts","sourceRoot":"","sources":["../src/session_factory.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACvB,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAC1D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;CAC5C,CAAC;AAEF,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,CAkCnF"}
@@ -15,7 +15,6 @@ export async function createMuSession(opts) {
15
15
  systemPrompt: opts.systemPrompt ?? "You are mu, an AI assistant.",
16
16
  settingsManager,
17
17
  additionalExtensionPaths: opts.extensionPaths,
18
- extensionFactories: opts.extensionFactories,
19
18
  });
20
19
  await resourceLoader.reload();
21
20
  const { session } = await createAgentSession({
package/package.json CHANGED
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "name": "@femtomc/mu-agent",
3
- "version": "26.2.37",
3
+ "version": "26.2.39",
4
+ "description": "Shared agent runtime for mu chat, orchestration roles, and serve extensions.",
5
+ "keywords": ["mu", "agent", "runtime", "chat", "extensions"],
4
6
  "type": "module",
5
7
  "main": "./dist/index.js",
6
8
  "types": "./dist/index.d.ts",
@@ -14,7 +16,7 @@
14
16
  "dist/**"
15
17
  ],
16
18
  "dependencies": {
17
- "@femtomc/mu-core": "26.2.37",
19
+ "@femtomc/mu-core": "26.2.39",
18
20
  "@mariozechner/pi-agent-core": "^0.52.12",
19
21
  "@mariozechner/pi-ai": "^0.52.12",
20
22
  "@mariozechner/pi-coding-agent": "^0.52.12",
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta_agent.d.ts","sourceRoot":"","sources":["../src/meta_agent.ts"],"names":[],"mappings":"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"}