@femtomc/mu-agent 26.2.38 → 26.2.40
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 +5 -6
- package/dist/extensions/index.d.ts +0 -8
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +0 -16
- package/dist/extensions/server-tools.d.ts +1 -1
- package/dist/extensions/server-tools.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/mu_roles.d.ts.map +1 -1
- package/dist/mu_roles.js +1 -2
- package/dist/{meta_agent.d.ts → operator.d.ts} +31 -32
- package/dist/operator.d.ts.map +1 -0
- package/dist/{meta_agent.js → operator.js} +36 -40
- package/dist/pi_sdk_backend.d.ts +0 -1
- package/dist/pi_sdk_backend.d.ts.map +1 -1
- package/dist/pi_sdk_backend.js +0 -1
- package/dist/prompt.js +5 -5
- package/dist/session_factory.d.ts +0 -2
- package/dist/session_factory.d.ts.map +1 -1
- package/dist/session_factory.js +0 -1
- package/package.json +10 -2
- package/dist/meta_agent.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
# @femtomc/mu-agent
|
|
2
2
|
|
|
3
|
-
Shared
|
|
3
|
+
Shared agent runtime package for mu.
|
|
4
4
|
|
|
5
|
-
This package
|
|
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
|
|
9
|
-
- Command context resolution for
|
|
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/
|
|
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;
|
|
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"}
|
package/dist/extensions/index.js
CHANGED
|
@@ -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
|
|
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
|
|
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
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
package/dist/mu_roles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mu_roles.d.ts","sourceRoot":"","sources":["../src/mu_roles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mu_roles.d.ts","sourceRoot":"","sources":["../src/mu_roles.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,MAAM,GAAG,cAAc,GAAG,QAAQ,CAAC;AAE/C,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAM5D;AAgED,eAAO,MAAM,2BAA2B,QAwC5B,CAAC;AAEb,eAAO,MAAM,qBAAqB,QA0BtB,CAAC;AAMb;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1F"}
|
package/dist/mu_roles.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
2
1
|
import { join } from "node:path";
|
|
3
2
|
import { splitFrontmatter } from "./prompt.js";
|
|
4
3
|
/** Determine role from tags. Defaults to orchestrator if no role tag present. */
|
|
@@ -153,7 +152,7 @@ export async function systemPromptForRole(role, repoRoot) {
|
|
|
153
152
|
if (repoRoot) {
|
|
154
153
|
try {
|
|
155
154
|
const filePath = join(repoRoot, ".mu", "roles", `${role}.md`);
|
|
156
|
-
const raw = await
|
|
155
|
+
const raw = await Bun.file(filePath).text();
|
|
157
156
|
const { body } = splitFrontmatter(raw);
|
|
158
157
|
return body;
|
|
159
158
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { CommandContextResolver } from "./command_context.js";
|
|
3
|
-
export type
|
|
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
|
|
14
|
+
export type MessagingOperatorIdentityBinding = {
|
|
15
15
|
binding_id: string;
|
|
16
16
|
assurance_tier: string;
|
|
17
17
|
};
|
|
18
|
-
type InboundEnvelope =
|
|
19
|
-
type IdentityBinding =
|
|
20
|
-
export declare const
|
|
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
|
|
43
|
-
export declare const
|
|
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
|
|
72
|
-
export type
|
|
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
|
|
79
|
-
runTurn(input:
|
|
78
|
+
export interface MessagingOperatorBackend {
|
|
79
|
+
runTurn(input: OperatorBackendTurnInput): Promise<OperatorBackendTurnResult>;
|
|
80
80
|
}
|
|
81
|
-
export type
|
|
81
|
+
export type OperatorDecision = {
|
|
82
82
|
kind: "response";
|
|
83
83
|
message: string;
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
operatorSessionId: string;
|
|
85
|
+
operatorTurnId: string;
|
|
86
86
|
} | {
|
|
87
87
|
kind: "command";
|
|
88
88
|
commandText: string;
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
operatorSessionId: string;
|
|
90
|
+
operatorTurnId: string;
|
|
91
91
|
} | {
|
|
92
92
|
kind: "reject";
|
|
93
|
-
reason: "
|
|
93
|
+
reason: "operator_disabled" | "operator_action_disallowed" | "operator_invalid_output" | "context_missing" | "context_ambiguous" | "context_unauthorized" | "cli_validation_failed";
|
|
94
94
|
details?: string;
|
|
95
|
-
|
|
96
|
-
|
|
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:
|
|
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: "
|
|
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
|
|
118
|
-
backend:
|
|
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
|
|
125
|
+
export declare class MessagingOperatorRuntime {
|
|
126
126
|
#private;
|
|
127
|
-
constructor(opts:
|
|
127
|
+
constructor(opts: MessagingOperatorRuntimeOpts);
|
|
128
128
|
handleInbound(opts: {
|
|
129
129
|
inbound: InboundEnvelope;
|
|
130
130
|
binding: IdentityBinding;
|
|
131
|
-
}): Promise<
|
|
131
|
+
}): Promise<OperatorDecision>;
|
|
132
132
|
}
|
|
133
|
-
export type
|
|
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
|
|
142
|
+
export declare class PiMessagingOperatorBackend implements MessagingOperatorBackend {
|
|
144
143
|
#private;
|
|
145
|
-
constructor(opts?:
|
|
146
|
-
runTurn(input:
|
|
144
|
+
constructor(opts?: PiMessagingOperatorBackendOpts);
|
|
145
|
+
runTurn(input: OperatorBackendTurnInput): Promise<OperatorBackendTurnResult>;
|
|
147
146
|
}
|
|
148
147
|
export {};
|
|
149
|
-
//# sourceMappingURL=
|
|
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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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
1
|
import { z } from "zod";
|
|
3
2
|
import { CommandContextResolver } from "./command_context.js";
|
|
4
3
|
import { createMuSession } from "./session_factory.js";
|
|
5
4
|
const SAFE_RESPONSE_RE = /^[\s\S]{1,2000}$/;
|
|
6
|
-
export const
|
|
5
|
+
export const OperatorApprovedCommandSchema = z.discriminatedUnion("kind", [
|
|
7
6
|
z.object({ kind: z.literal("status") }),
|
|
8
7
|
z.object({ kind: z.literal("ready") }),
|
|
9
8
|
z.object({ kind: z.literal("issue_list") }),
|
|
@@ -24,9 +23,9 @@ export const MetaApprovedCommandSchema = z.discriminatedUnion("kind", [
|
|
|
24
23
|
max_steps: z.number().int().min(1).max(500).optional(),
|
|
25
24
|
}),
|
|
26
25
|
]);
|
|
27
|
-
export const
|
|
26
|
+
export const OperatorBackendTurnResultSchema = z.discriminatedUnion("kind", [
|
|
28
27
|
z.object({ kind: z.literal("respond"), message: z.string().trim().min(1).max(2000) }),
|
|
29
|
-
z.object({ kind: z.literal("command"), command:
|
|
28
|
+
z.object({ kind: z.literal("command"), command: OperatorApprovedCommandSchema }),
|
|
30
29
|
]);
|
|
31
30
|
function splitPromptIntoTokens(prompt) {
|
|
32
31
|
return prompt
|
|
@@ -77,7 +76,7 @@ export class ApprovedCommandBroker {
|
|
|
77
76
|
}
|
|
78
77
|
case "run_resume": {
|
|
79
78
|
if (!this.#runTriggersEnabled) {
|
|
80
|
-
return { kind: "reject", reason: "
|
|
79
|
+
return { kind: "reject", reason: "operator_action_disallowed", details: "run triggers disabled" };
|
|
81
80
|
}
|
|
82
81
|
commandKey = "run resume";
|
|
83
82
|
args = [];
|
|
@@ -91,14 +90,14 @@ export class ApprovedCommandBroker {
|
|
|
91
90
|
}
|
|
92
91
|
case "run_start": {
|
|
93
92
|
if (!this.#runTriggersEnabled) {
|
|
94
|
-
return { kind: "reject", reason: "
|
|
93
|
+
return { kind: "reject", reason: "operator_action_disallowed", details: "run triggers disabled" };
|
|
95
94
|
}
|
|
96
95
|
commandKey = "run start";
|
|
97
96
|
args = splitPromptIntoTokens(opts.proposal.prompt);
|
|
98
97
|
break;
|
|
99
98
|
}
|
|
100
99
|
default:
|
|
101
|
-
return { kind: "reject", reason: "
|
|
100
|
+
return { kind: "reject", reason: "operator_action_disallowed" };
|
|
102
101
|
}
|
|
103
102
|
const resolved = this.#contextResolver.resolve({
|
|
104
103
|
repoRoot: opts.inbound.repo_root,
|
|
@@ -122,15 +121,15 @@ export class ApprovedCommandBroker {
|
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
123
|
function defaultSessionId() {
|
|
125
|
-
return `
|
|
124
|
+
return `operator-${crypto.randomUUID()}`;
|
|
126
125
|
}
|
|
127
126
|
function defaultTurnId() {
|
|
128
|
-
return `turn-${randomUUID()}`;
|
|
127
|
+
return `turn-${crypto.randomUUID()}`;
|
|
129
128
|
}
|
|
130
129
|
function conversationKey(inbound, binding) {
|
|
131
130
|
return `${inbound.channel}:${inbound.channel_tenant_id}:${inbound.channel_conversation_id}:${binding.binding_id}`;
|
|
132
131
|
}
|
|
133
|
-
export class
|
|
132
|
+
export class MessagingOperatorRuntime {
|
|
134
133
|
#backend;
|
|
135
134
|
#broker;
|
|
136
135
|
#enabled;
|
|
@@ -162,22 +161,22 @@ export class MessagingMetaAgentRuntime {
|
|
|
162
161
|
if (!this.#enabled) {
|
|
163
162
|
return {
|
|
164
163
|
kind: "reject",
|
|
165
|
-
reason: "
|
|
166
|
-
|
|
167
|
-
|
|
164
|
+
reason: "operator_disabled",
|
|
165
|
+
operatorSessionId: sessionId,
|
|
166
|
+
operatorTurnId: turnId,
|
|
168
167
|
};
|
|
169
168
|
}
|
|
170
169
|
if (this.#enabledChannels && !this.#enabledChannels.has(opts.inbound.channel.toLowerCase())) {
|
|
171
170
|
return {
|
|
172
171
|
kind: "reject",
|
|
173
|
-
reason: "
|
|
174
|
-
|
|
175
|
-
|
|
172
|
+
reason: "operator_disabled",
|
|
173
|
+
operatorSessionId: sessionId,
|
|
174
|
+
operatorTurnId: turnId,
|
|
176
175
|
};
|
|
177
176
|
}
|
|
178
177
|
let backendResult;
|
|
179
178
|
try {
|
|
180
|
-
backendResult =
|
|
179
|
+
backendResult = OperatorBackendTurnResultSchema.parse(await this.#backend.runTurn({
|
|
181
180
|
sessionId,
|
|
182
181
|
turnId,
|
|
183
182
|
inbound: opts.inbound,
|
|
@@ -187,10 +186,10 @@ export class MessagingMetaAgentRuntime {
|
|
|
187
186
|
catch (err) {
|
|
188
187
|
return {
|
|
189
188
|
kind: "reject",
|
|
190
|
-
reason: "
|
|
191
|
-
details: err instanceof Error ? err.message : "
|
|
192
|
-
|
|
193
|
-
|
|
189
|
+
reason: "operator_invalid_output",
|
|
190
|
+
details: err instanceof Error ? err.message : "operator_backend_error",
|
|
191
|
+
operatorSessionId: sessionId,
|
|
192
|
+
operatorTurnId: turnId,
|
|
194
193
|
};
|
|
195
194
|
}
|
|
196
195
|
if (backendResult.kind === "respond") {
|
|
@@ -198,17 +197,17 @@ export class MessagingMetaAgentRuntime {
|
|
|
198
197
|
if (!SAFE_RESPONSE_RE.test(message)) {
|
|
199
198
|
return {
|
|
200
199
|
kind: "reject",
|
|
201
|
-
reason: "
|
|
200
|
+
reason: "operator_invalid_output",
|
|
202
201
|
details: "invalid response payload",
|
|
203
|
-
|
|
204
|
-
|
|
202
|
+
operatorSessionId: sessionId,
|
|
203
|
+
operatorTurnId: turnId,
|
|
205
204
|
};
|
|
206
205
|
}
|
|
207
206
|
return {
|
|
208
207
|
kind: "response",
|
|
209
208
|
message,
|
|
210
|
-
|
|
211
|
-
|
|
209
|
+
operatorSessionId: sessionId,
|
|
210
|
+
operatorTurnId: turnId,
|
|
212
211
|
};
|
|
213
212
|
}
|
|
214
213
|
const approved = this.#broker.approve({
|
|
@@ -220,15 +219,15 @@ export class MessagingMetaAgentRuntime {
|
|
|
220
219
|
kind: "reject",
|
|
221
220
|
reason: approved.reason,
|
|
222
221
|
details: approved.details,
|
|
223
|
-
|
|
224
|
-
|
|
222
|
+
operatorSessionId: sessionId,
|
|
223
|
+
operatorTurnId: turnId,
|
|
225
224
|
};
|
|
226
225
|
}
|
|
227
226
|
return {
|
|
228
227
|
kind: "command",
|
|
229
228
|
commandText: approved.commandText,
|
|
230
|
-
|
|
231
|
-
|
|
229
|
+
operatorSessionId: sessionId,
|
|
230
|
+
operatorTurnId: turnId,
|
|
232
231
|
};
|
|
233
232
|
}
|
|
234
233
|
}
|
|
@@ -243,7 +242,7 @@ export const DEFAULT_CHAT_SYSTEM_PROMPT = [
|
|
|
243
242
|
"",
|
|
244
243
|
"Be concise, practical, and actionable.",
|
|
245
244
|
].join("\n");
|
|
246
|
-
const
|
|
245
|
+
const DEFAULT_OPERATOR_SYSTEM_PROMPT = [
|
|
247
246
|
"You are mu, an AI assistant for the mu orchestration platform.",
|
|
248
247
|
"You have tools to interact with the mu server: mu_status, mu_control_plane, mu_issues, mu_forum, mu_events.",
|
|
249
248
|
"Use these tools to answer questions about repository state, issues, events, and control-plane runtime state.",
|
|
@@ -253,7 +252,7 @@ const DEFAULT_META_SYSTEM_PROMPT = [
|
|
|
253
252
|
"Be concise, practical, and actionable.",
|
|
254
253
|
"Respond in plain text — do not wrap in JSON.",
|
|
255
254
|
].join("\n");
|
|
256
|
-
function
|
|
255
|
+
function buildOperatorPrompt(input) {
|
|
257
256
|
return [
|
|
258
257
|
`[Messaging context]`,
|
|
259
258
|
`channel: ${input.inbound.channel}`,
|
|
@@ -263,22 +262,20 @@ function buildMetaPrompt(input) {
|
|
|
263
262
|
`User message: ${input.inbound.command_text}`,
|
|
264
263
|
].join("\n");
|
|
265
264
|
}
|
|
266
|
-
export class
|
|
265
|
+
export class PiMessagingOperatorBackend {
|
|
267
266
|
#provider;
|
|
268
267
|
#model;
|
|
269
268
|
#thinking;
|
|
270
269
|
#systemPrompt;
|
|
271
270
|
#timeoutMs;
|
|
272
271
|
#extensionPaths;
|
|
273
|
-
#extensionFactories;
|
|
274
272
|
constructor(opts = {}) {
|
|
275
273
|
this.#provider = opts.provider;
|
|
276
274
|
this.#model = opts.model;
|
|
277
275
|
this.#thinking = opts.thinking ?? "minimal";
|
|
278
|
-
this.#systemPrompt = opts.systemPrompt ??
|
|
276
|
+
this.#systemPrompt = opts.systemPrompt ?? DEFAULT_OPERATOR_SYSTEM_PROMPT;
|
|
279
277
|
this.#timeoutMs = Math.max(1_000, Math.trunc(opts.timeoutMs ?? 90_000));
|
|
280
278
|
this.#extensionPaths = opts.extensionPaths ?? [];
|
|
281
|
-
this.#extensionFactories = opts.extensionFactories ?? [];
|
|
282
279
|
}
|
|
283
280
|
async runTurn(input) {
|
|
284
281
|
const session = await createMuSession({
|
|
@@ -288,7 +285,6 @@ export class PiMessagingMetaAgentBackend {
|
|
|
288
285
|
model: this.#model,
|
|
289
286
|
thinking: this.#thinking,
|
|
290
287
|
extensionPaths: this.#extensionPaths,
|
|
291
|
-
extensionFactories: this.#extensionFactories,
|
|
292
288
|
});
|
|
293
289
|
try {
|
|
294
290
|
await session.bindExtensions({
|
|
@@ -325,11 +321,11 @@ export class PiMessagingMetaAgentBackend {
|
|
|
325
321
|
}
|
|
326
322
|
});
|
|
327
323
|
const timeoutPromise = new Promise((_, reject) => {
|
|
328
|
-
setTimeout(() => reject(new Error("pi
|
|
324
|
+
setTimeout(() => reject(new Error("pi operator timeout")), this.#timeoutMs);
|
|
329
325
|
});
|
|
330
326
|
try {
|
|
331
327
|
await Promise.race([
|
|
332
|
-
session.prompt(
|
|
328
|
+
session.prompt(buildOperatorPrompt(input), { expandPromptTemplates: false }),
|
|
333
329
|
timeoutPromise,
|
|
334
330
|
]);
|
|
335
331
|
}
|
|
@@ -339,7 +335,7 @@ export class PiMessagingMetaAgentBackend {
|
|
|
339
335
|
// The agent now responds naturally with tools — always return as respond
|
|
340
336
|
const message = assistantText.trim();
|
|
341
337
|
if (!message) {
|
|
342
|
-
throw new Error("
|
|
338
|
+
throw new Error("operator_empty_response");
|
|
343
339
|
}
|
|
344
340
|
return { kind: "respond", message: message.slice(0, 2000) };
|
|
345
341
|
}
|
package/dist/pi_sdk_backend.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/pi_sdk_backend.js
CHANGED
|
@@ -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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readdir
|
|
1
|
+
import { readdir } from "node:fs/promises";
|
|
2
2
|
import { isAbsolute, join, relative } from "node:path";
|
|
3
3
|
function stripQuotes(s) {
|
|
4
4
|
const trimmed = s.trim();
|
|
@@ -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,
|
|
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) {
|
|
@@ -88,7 +88,7 @@ export function extractDescription(meta, body) {
|
|
|
88
88
|
return { description: "", source: "none" };
|
|
89
89
|
}
|
|
90
90
|
export async function readPromptMeta(path) {
|
|
91
|
-
const text = await
|
|
91
|
+
const text = await Bun.file(path).text();
|
|
92
92
|
const { meta } = splitFrontmatter(text);
|
|
93
93
|
return meta;
|
|
94
94
|
}
|
|
@@ -108,7 +108,7 @@ export async function buildRoleCatalog(repoRoot) {
|
|
|
108
108
|
const sections = [];
|
|
109
109
|
for (const file of roleFiles) {
|
|
110
110
|
const abs = join(rolesDir, file);
|
|
111
|
-
const text = await
|
|
111
|
+
const text = await Bun.file(abs).text();
|
|
112
112
|
const { meta, body } = splitFrontmatter(text);
|
|
113
113
|
const name = file.replace(/\.md$/, "");
|
|
114
114
|
const promptPath = toPosixPath(relative(repoRoot, abs));
|
|
@@ -130,7 +130,7 @@ export async function buildRoleCatalog(repoRoot) {
|
|
|
130
130
|
return sections.join("\n\n");
|
|
131
131
|
}
|
|
132
132
|
export async function renderPromptTemplate(path, issue, opts = {}) {
|
|
133
|
-
const text = await
|
|
133
|
+
const text = await Bun.file(path).text();
|
|
134
134
|
const { body } = splitFrontmatter(text);
|
|
135
135
|
let promptText = issue.title ?? "";
|
|
136
136
|
if (issue.body) {
|
|
@@ -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":"
|
|
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"}
|
package/dist/session_factory.js
CHANGED
|
@@ -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,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@femtomc/mu-agent",
|
|
3
|
-
"version": "26.2.
|
|
3
|
+
"version": "26.2.40",
|
|
4
|
+
"description": "Shared agent runtime for mu chat, orchestration roles, and serve extensions.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mu",
|
|
7
|
+
"agent",
|
|
8
|
+
"runtime",
|
|
9
|
+
"chat",
|
|
10
|
+
"extensions"
|
|
11
|
+
],
|
|
4
12
|
"type": "module",
|
|
5
13
|
"main": "./dist/index.js",
|
|
6
14
|
"types": "./dist/index.d.ts",
|
|
@@ -14,7 +22,7 @@
|
|
|
14
22
|
"dist/**"
|
|
15
23
|
],
|
|
16
24
|
"dependencies": {
|
|
17
|
-
"@femtomc/mu-core": "26.2.
|
|
25
|
+
"@femtomc/mu-core": "26.2.40",
|
|
18
26
|
"@mariozechner/pi-agent-core": "^0.52.12",
|
|
19
27
|
"@mariozechner/pi-ai": "^0.52.12",
|
|
20
28
|
"@mariozechner/pi-coding-agent": "^0.52.12",
|
package/dist/meta_agent.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"meta_agent.d.ts","sourceRoot":"","sources":["../src/meta_agent.ts"],"names":[],"mappings":"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"}
|