@agents-ensemble/cli 0.7.0 → 0.9.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.
- package/README.md +13 -5
- package/dist/conductor-auth-command.d.ts +18 -0
- package/dist/conductor-auth-command.d.ts.map +1 -0
- package/dist/conductor-auth-command.js +172 -0
- package/dist/conductor-auth-command.js.map +1 -0
- package/dist/index.js +52 -24
- package/dist/index.js.map +1 -1
- package/dist/session-log-lines.d.ts.map +1 -1
- package/dist/session-log-lines.js +10 -5
- package/dist/session-log-lines.js.map +1 -1
- package/dist/session-sinks.d.ts.map +1 -1
- package/dist/session-sinks.js +1 -0
- package/dist/session-sinks.js.map +1 -1
- package/docs/config.md +12 -10
- package/docs/settings.md +4 -4
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -25,18 +25,20 @@ conductor:
|
|
|
25
25
|
backend: pi
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
Pi backend は Pi
|
|
28
|
+
Pi backend は Pi の設定ファイルを読みます。モデル設定は次のいずれかの resource root に置き、認証は `ensemble auth` または Pi の環境変数・設定ファイルから provider 単位で解決します(プロジェクト設定がユーザ設定を上書きします)。
|
|
29
29
|
|
|
30
30
|
| 層 | パス |
|
|
31
31
|
|----|------|
|
|
32
32
|
| ユーザ | `~/.ensemble/pi/` |
|
|
33
33
|
| プロジェクト | `<repoRoot>/.ensemble/pi/` |
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
`ensemble auth login` は設定済みの conductor backend に分岐します。Cursor は Cursor SDK のブラウザログイン、Pi は **provider 単位のログイン**です。Pi では `--provider <id>` を指定でき、省略時は Pi `settings.json` の `defaultProvider`(または選択モデル)から決まります。API-key provider は TTY の secret prompt から `~/.ensemble/pi/auth.json`(または `conductor.pi.agentDir` の `auth.json`)へ保存し、OAuth provider は Pi 1.x の `ModelRuntime.login` を使って URL・device code を stderr に表示します。`ensemble auth logout` は選択 provider の user 層 credential を削除し、`ensemble auth status` は秘密値を表示せず状態・保存先を示します。プロジェクト層の `<repoRoot>/.ensemble/pi/auth.json` は既存の project-over-user 読取優先を保ち、login が書き換えることはありません。project 層の明示的な OAuth credential は refresh できないため実行時には使わず、`ensemble auth login --provider <id>` で user 層へ保存する必要があります。MCP HTTP OAuth は Pi 公式 MCP extension が別に管理します。`ensemble models list` は認証済み Pi model のみを表示します。
|
|
36
|
+
|
|
37
|
+
Pi の resource root は `~/.ensemble/pi/` と `<repoRoot>/.ensemble/pi/` です。`conductor.pi.agentDir` / `conductor.pi.projectDir` で root のみ上書きできます。`settings.json` / `auth.json` / `models.json` / `extensions/` / `skills/` / `prompts/` / `themes/` を解決し、skills は compiled system prompt に追加され、prompts は `/name args` として展開されます。themes は headless conductor で読み込み・project 同名解決まで行いますが、TUI renderer がないため色・表示設定は適用しません。`.ensemble/pi/SYSTEM.md` / `APPEND_SYSTEM.md` は conductor の system prompt には使わず、modular-prompt のコンパイル結果を優先します。
|
|
36
38
|
|
|
37
39
|
`settings.json` の headless 対応は、モデル選択(`defaultProvider` / `defaultModel`)、認証 fallback(`apiKey` / `apiKeys`)、resource path(`extensions` / `skills` / `prompts` / `themes`)に限定されます。`defaultThinkingLevel`、`thinkingBudgets`、`packages`、`enableSkillCommands` など Pi coding-agent の挙動・TUI・package 設定は警告なしで無視します。詳細な対応キーと失敗モードは [config.md の headless 対応範囲](../config.md#settingsjson-の-headless-対応範囲) を参照してください。
|
|
38
40
|
|
|
39
|
-
MCP は
|
|
41
|
+
MCP は harness が解決した `mcp.json` の map を Pi 1.x の公式 `createMcpExtension({ loadConfig })` へ注入します。Pi の `createAgentSession` は stdio / Streamable HTTP を扱い、SSE はサポートしません。MCP tool 名は `mcp__<server>__<tool>`、resource tools は `list_mcp_resources` / `list_mcp_resource_templates` / `read_mcp_resource` です。HTTP OAuth は公式 extension の対話フロー・credential store が担当します。解決済み設定が無い場合も harness tools と local extension tools は有効です。sidecar には MCP map の digest を保存し、resume 時に変更を検出した場合は fail fast します。Pi `.pi/mcp.json` への同期や core 独自の MCP client はありません。設計上の前提と制限は [ADR 0025](../adr/0025-conductor-agent-backend-sdk-and-pi.md) を参照してください。
|
|
40
42
|
|
|
41
43
|
backend はセッション開始時に選択され、resume の途中では切り替えられません。system prompt の渡し方、認証、resume の差分は [ADR 0025](../adr/0025-conductor-agent-backend-sdk-and-pi.md) にまとまっています。
|
|
42
44
|
|
|
@@ -52,16 +54,22 @@ backend を選んだ後の主経路は共通です。リポジトリのディレ
|
|
|
52
54
|
|------|------|
|
|
53
55
|
| worker(既定の Cursor ACP) | `agent login` |
|
|
54
56
|
| conductor(Cursor SDK、既定) | `ensemble auth login` |
|
|
55
|
-
| conductor(Pi) |
|
|
57
|
+
| conductor(Pi、API key) | `ensemble auth login --provider <id>`(TTY の secret prompt) |
|
|
58
|
+
| conductor(Pi、OAuth) | `ensemble auth login --provider <id>`(TTY。URL / device code は stderr) |
|
|
56
59
|
| GitHub API(gh CLI を使う場合) | `gh auth login` |
|
|
57
60
|
|
|
58
61
|
```bash
|
|
59
62
|
# worker(既定の Cursor ACP)
|
|
60
63
|
agent login
|
|
61
64
|
|
|
62
|
-
# conductor(Cursor SDK
|
|
65
|
+
# conductor(Cursor SDK を使う場合)
|
|
63
66
|
ensemble auth login
|
|
64
67
|
|
|
68
|
+
# conductor(Pi を使う場合。provider 省略時は settings.json から解決)
|
|
69
|
+
ensemble auth login --provider <provider-id>
|
|
70
|
+
ensemble auth status
|
|
71
|
+
ensemble models list
|
|
72
|
+
|
|
65
73
|
# GitHub API(gh CLI を使う場合)
|
|
66
74
|
gh auth login
|
|
67
75
|
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ConductorAuthOptions, type ConductorAuthStatus, type ConductorLoginResult, type ConductorLogoutResult, type EnsembleConfig, type ResolvedProfile } from '@agents-ensemble/core';
|
|
2
|
+
export interface ConductorCommandOptions {
|
|
3
|
+
repoRoot?: string;
|
|
4
|
+
profile?: string;
|
|
5
|
+
provider?: string;
|
|
6
|
+
modelId?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ResolvedConductorCommandContext {
|
|
9
|
+
repoRoot: string;
|
|
10
|
+
config: EnsembleConfig;
|
|
11
|
+
profile: ResolvedProfile;
|
|
12
|
+
auth: ConductorAuthOptions;
|
|
13
|
+
}
|
|
14
|
+
export declare function resolveConductorCommandContext(options?: ConductorCommandOptions): Promise<ResolvedConductorCommandContext>;
|
|
15
|
+
export declare function runConductorLogin(options?: ConductorCommandOptions): Promise<ConductorLoginResult>;
|
|
16
|
+
export declare function runConductorLogout(options?: ConductorCommandOptions): Promise<ConductorLogoutResult>;
|
|
17
|
+
export declare function runConductorAuthStatus(options?: ConductorCommandOptions): Promise<ConductorAuthStatus>;
|
|
18
|
+
//# sourceMappingURL=conductor-auth-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conductor-auth-command.d.ts","sourceRoot":"","sources":["../src/conductor-auth-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAUL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,wBAAsB,8BAA8B,CAClD,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,+BAA+B,CAAC,CAsC1C;AAED,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,oBAAoB,CAAC,CA6B/B;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,qBAAqB,CAAC,CAGhC;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,mBAAmB,CAAC,CAG9B"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { createInterface } from 'node:readline';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { getConductorAuthStatus, isPiConductorOAuthProvider, loadEnsembleConfig, loadProfile, loginConductor, logoutConductor, resolvePiConductorProvider, resolveConductorAuthBackend, resolveConductorPiResourcePaths, } from '@agents-ensemble/core';
|
|
4
|
+
export async function resolveConductorCommandContext(options = {}) {
|
|
5
|
+
const repoRoot = resolve(options.repoRoot ?? process.cwd());
|
|
6
|
+
const config = await loadEnsembleConfig(repoRoot);
|
|
7
|
+
const profile = (await loadProfile({
|
|
8
|
+
profile: options.profile,
|
|
9
|
+
cwd: repoRoot,
|
|
10
|
+
config,
|
|
11
|
+
})).profile;
|
|
12
|
+
const backend = resolveConductorAuthBackend({ profile, config });
|
|
13
|
+
const configuredModel = config.conductor.model !== 'default' && config.conductor.model !== 'auto'
|
|
14
|
+
? config.conductor.model
|
|
15
|
+
: undefined;
|
|
16
|
+
const pi = backend === 'pi'
|
|
17
|
+
? {
|
|
18
|
+
cwd: repoRoot,
|
|
19
|
+
pi: resolveConductorPiResourcePaths({ repoRoot, config }),
|
|
20
|
+
}
|
|
21
|
+
: undefined;
|
|
22
|
+
return {
|
|
23
|
+
repoRoot,
|
|
24
|
+
config,
|
|
25
|
+
profile,
|
|
26
|
+
auth: {
|
|
27
|
+
backend,
|
|
28
|
+
profile,
|
|
29
|
+
config,
|
|
30
|
+
...(pi ? { pi } : {}),
|
|
31
|
+
...(options.provider ? { provider: options.provider } : {}),
|
|
32
|
+
...(options.modelId ?? configuredModel
|
|
33
|
+
? { modelId: options.modelId ?? configuredModel }
|
|
34
|
+
: {}),
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export async function runConductorLogin(options = {}) {
|
|
39
|
+
const context = await resolveConductorCommandContext(options);
|
|
40
|
+
if (context.auth.backend !== 'pi') {
|
|
41
|
+
return loginConductor(context.auth);
|
|
42
|
+
}
|
|
43
|
+
const piOptions = context.auth.pi;
|
|
44
|
+
const providerOptions = {
|
|
45
|
+
...piOptions,
|
|
46
|
+
...(context.auth.modelId ? { modelId: context.auth.modelId } : {}),
|
|
47
|
+
...(options.provider ? { provider: options.provider } : {}),
|
|
48
|
+
...(options.modelId ? { modelId: options.modelId } : {}),
|
|
49
|
+
};
|
|
50
|
+
const oauth = await isPiConductorOAuthProvider(providerOptions);
|
|
51
|
+
if (oauth) {
|
|
52
|
+
requireInteractiveTty('Pi OAuth login');
|
|
53
|
+
return loginConductor({
|
|
54
|
+
...context.auth,
|
|
55
|
+
oauthCallbacks: createOAuthLoginCallbacks(),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
const provider = options.provider ?? (await resolvePiConductorProvider(providerOptions));
|
|
59
|
+
const apiKey = await promptSecret(`Pi API key for ${provider}: `);
|
|
60
|
+
return loginConductor({
|
|
61
|
+
...context.auth,
|
|
62
|
+
provider,
|
|
63
|
+
apiKey,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
export async function runConductorLogout(options = {}) {
|
|
67
|
+
const context = await resolveConductorCommandContext(options);
|
|
68
|
+
return logoutConductor(context.auth);
|
|
69
|
+
}
|
|
70
|
+
export async function runConductorAuthStatus(options = {}) {
|
|
71
|
+
const context = await resolveConductorCommandContext(options);
|
|
72
|
+
return getConductorAuthStatus(context.auth);
|
|
73
|
+
}
|
|
74
|
+
function requireInteractiveTty(operation) {
|
|
75
|
+
if (!process.stdin.isTTY) {
|
|
76
|
+
throw new Error(`${operation} requires a TTY. Run it from an interactive terminal (SSH is supported), or configure Pi auth.json/environment credentials manually.`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function promptSecret(prompt) {
|
|
80
|
+
requireInteractiveTty('Pi API-key login');
|
|
81
|
+
const input = process.stdin;
|
|
82
|
+
const output = process.stderr;
|
|
83
|
+
return new Promise((resolveAnswer, reject) => {
|
|
84
|
+
let answer = '';
|
|
85
|
+
let settled = false;
|
|
86
|
+
const cleanup = () => {
|
|
87
|
+
input.off('data', onData);
|
|
88
|
+
if (input.setRawMode)
|
|
89
|
+
input.setRawMode(false);
|
|
90
|
+
input.pause();
|
|
91
|
+
};
|
|
92
|
+
const finish = (error) => {
|
|
93
|
+
if (settled)
|
|
94
|
+
return;
|
|
95
|
+
settled = true;
|
|
96
|
+
cleanup();
|
|
97
|
+
output.write('\n');
|
|
98
|
+
if (error)
|
|
99
|
+
reject(error);
|
|
100
|
+
else
|
|
101
|
+
resolveAnswer(answer);
|
|
102
|
+
};
|
|
103
|
+
const onData = (chunk) => {
|
|
104
|
+
for (const character of String(chunk)) {
|
|
105
|
+
if (character === '\u0003') {
|
|
106
|
+
finish(new Error('Pi API-key login cancelled.'));
|
|
107
|
+
}
|
|
108
|
+
else if (character === '\r' || character === '\n') {
|
|
109
|
+
finish();
|
|
110
|
+
}
|
|
111
|
+
else if (character === '\u007f' || character === '\b') {
|
|
112
|
+
answer = answer.slice(0, -1);
|
|
113
|
+
}
|
|
114
|
+
else if (character >= ' ') {
|
|
115
|
+
answer += character;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
output.write(prompt);
|
|
120
|
+
input.resume();
|
|
121
|
+
if (input.setRawMode)
|
|
122
|
+
input.setRawMode(true);
|
|
123
|
+
input.on('data', onData);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function createOAuthLoginCallbacks() {
|
|
127
|
+
const write = (message) => {
|
|
128
|
+
process.stderr.write(`${message}\n`);
|
|
129
|
+
};
|
|
130
|
+
return {
|
|
131
|
+
onAuth: (info) => {
|
|
132
|
+
write(`Open this URL to authenticate Pi: ${info.url}`);
|
|
133
|
+
if (info.instructions)
|
|
134
|
+
write(info.instructions);
|
|
135
|
+
},
|
|
136
|
+
onDeviceCode: (info) => {
|
|
137
|
+
write(`Pi device code: ${info.userCode}`);
|
|
138
|
+
write(`Verification URL: ${info.verificationUri}`);
|
|
139
|
+
if (info.expiresInSeconds)
|
|
140
|
+
write(`Expires in: ${info.expiresInSeconds}s`);
|
|
141
|
+
},
|
|
142
|
+
onProgress: write,
|
|
143
|
+
onPrompt: (prompt) => promptLine(prompt.message),
|
|
144
|
+
onManualCodeInput: () => promptLine('Enter the authorization code: '),
|
|
145
|
+
onSelect: async (prompt) => {
|
|
146
|
+
write(prompt.message);
|
|
147
|
+
prompt.options.forEach((option, index) => write(`${index + 1}) ${option.label}`));
|
|
148
|
+
const answer = await promptLine('Select a login method: ');
|
|
149
|
+
const index = Number.parseInt(answer, 10) - 1;
|
|
150
|
+
return Number.isInteger(index) && prompt.options[index]
|
|
151
|
+
? prompt.options[index].id
|
|
152
|
+
: undefined;
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
async function promptLine(prompt) {
|
|
157
|
+
requireInteractiveTty('Pi OAuth login');
|
|
158
|
+
const readline = createInterface({
|
|
159
|
+
input: process.stdin,
|
|
160
|
+
output: process.stderr,
|
|
161
|
+
terminal: true,
|
|
162
|
+
});
|
|
163
|
+
try {
|
|
164
|
+
return await new Promise((resolveAnswer) => {
|
|
165
|
+
readline.question(prompt, resolveAnswer);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
readline.close();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=conductor-auth-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conductor-auth-command.js","sourceRoot":"","sources":["../src/conductor-auth-command.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
import { Command } from 'commander';
|
|
4
|
-
import {
|
|
4
|
+
import { listConductorModels, resolveIssueUrl, } from '@agents-ensemble/core';
|
|
5
5
|
import { readCliPackageVersion } from './cli-version.js';
|
|
6
6
|
import { executeIssueCommand } from './issue-command.js';
|
|
7
7
|
import { formatModelsListJson, formatModelsListText } from './format-models-list.js';
|
|
@@ -10,6 +10,7 @@ import { resolveIssueSummaryFormat } from './resolve-summary-format.js';
|
|
|
10
10
|
import { writeIssueSessionSummary } from './write-issue-session-summary.js';
|
|
11
11
|
import { formatProfilesListJson, formatProfilesListText } from './format-profiles-list.js';
|
|
12
12
|
import { normalizeInitialOperatorMessage } from './operator-message.js';
|
|
13
|
+
import { runConductorAuthStatus, runConductorLogin, runConductorLogout, resolveConductorCommandContext, } from './conductor-auth-command.js';
|
|
13
14
|
const program = new Command();
|
|
14
15
|
program
|
|
15
16
|
.name('ensemble')
|
|
@@ -64,13 +65,23 @@ program
|
|
|
64
65
|
process.exit(1);
|
|
65
66
|
}
|
|
66
67
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
function addConductorCommandOptions(command) {
|
|
69
|
+
return command
|
|
70
|
+
.option('--repo-root <path>', 'Repository root used for config, profile, and Pi project resources', process.cwd())
|
|
71
|
+
.option('--profile <name>', 'Team profile used to resolve conductor.backend')
|
|
72
|
+
.option('--provider <id>', 'Pi provider (default: settings.json defaultProvider)')
|
|
73
|
+
.option('--model-id <id>', 'Pi model id used to infer the provider');
|
|
74
|
+
}
|
|
75
|
+
const auth = program.command('auth').description('Conductor authentication');
|
|
76
|
+
addConductorCommandOptions(auth.command('login'))
|
|
77
|
+
.description('Log in to the configured conductor backend (Cursor browser login or Pi provider login)')
|
|
78
|
+
.action(async (options) => {
|
|
72
79
|
try {
|
|
73
|
-
const result = await
|
|
80
|
+
const result = await runConductorLogin(options);
|
|
81
|
+
if ('method' in result) {
|
|
82
|
+
console.log(`Pi: logged in provider ${result.provider} (${result.method}); stored in ${result.authPath}`);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
74
85
|
const who = result.email ?? 'unknown';
|
|
75
86
|
console.log(`Logged in as ${who}`);
|
|
76
87
|
console.log(`API key expires: ${new Date(result.apiKeyExpiresAtMs).toISOString()}`);
|
|
@@ -80,12 +91,15 @@ auth
|
|
|
80
91
|
process.exit(1);
|
|
81
92
|
}
|
|
82
93
|
});
|
|
83
|
-
auth
|
|
84
|
-
.
|
|
85
|
-
.
|
|
86
|
-
.action(async () => {
|
|
94
|
+
addConductorCommandOptions(auth.command('logout'))
|
|
95
|
+
.description('Clear stored credentials for the configured conductor backend')
|
|
96
|
+
.action(async (options) => {
|
|
87
97
|
try {
|
|
88
|
-
await
|
|
98
|
+
const result = await runConductorLogout(options);
|
|
99
|
+
if (result && 'backend' in result && result.backend === 'pi') {
|
|
100
|
+
console.log(`Pi: provider ${result.provider} logged out`);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
89
103
|
console.log('SDK: logged out');
|
|
90
104
|
}
|
|
91
105
|
catch (error) {
|
|
@@ -93,12 +107,24 @@ auth
|
|
|
93
107
|
process.exit(1);
|
|
94
108
|
}
|
|
95
109
|
});
|
|
96
|
-
auth
|
|
97
|
-
.
|
|
98
|
-
.
|
|
99
|
-
.action(async () => {
|
|
110
|
+
addConductorCommandOptions(auth.command('status'))
|
|
111
|
+
.description('Show non-secret authentication status for the configured backend')
|
|
112
|
+
.action(async (options) => {
|
|
100
113
|
try {
|
|
101
|
-
const status = await
|
|
114
|
+
const status = await runConductorAuthStatus(options);
|
|
115
|
+
if ('providers' in status) {
|
|
116
|
+
console.log(`Pi auth file: ${status.authPath}`);
|
|
117
|
+
if (status.providers.length === 0) {
|
|
118
|
+
console.log('Pi: no provider credentials configured');
|
|
119
|
+
}
|
|
120
|
+
for (const provider of status.providers) {
|
|
121
|
+
const state = provider.configured ? 'configured' : 'not configured';
|
|
122
|
+
const source = provider.source ? `; source=${provider.source}` : '';
|
|
123
|
+
const label = provider.label ? `; label=${provider.label}` : '';
|
|
124
|
+
console.log(`Pi: ${provider.provider}: ${state}${source}${label}`);
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
102
128
|
if (status.status === 'logged-in') {
|
|
103
129
|
const who = status.email ?? 'unknown';
|
|
104
130
|
const expires = status.apiKeyExpiresAtMs
|
|
@@ -121,16 +147,18 @@ auth
|
|
|
121
147
|
process.exit(1);
|
|
122
148
|
}
|
|
123
149
|
});
|
|
124
|
-
const models = program
|
|
125
|
-
|
|
126
|
-
.description('
|
|
127
|
-
models
|
|
128
|
-
.command('list')
|
|
129
|
-
.description('List models available to the authenticated conductor account')
|
|
150
|
+
const models = program.command('models').description('Conductor model catalog');
|
|
151
|
+
addConductorCommandOptions(models.command('list'))
|
|
152
|
+
.description('List models available to the authenticated conductor backend')
|
|
130
153
|
.option('--json', 'Output JSON')
|
|
131
154
|
.action(async (options) => {
|
|
132
155
|
try {
|
|
133
|
-
const
|
|
156
|
+
const context = await resolveConductorCommandContext(options);
|
|
157
|
+
const catalog = await listConductorModels({
|
|
158
|
+
...context.auth,
|
|
159
|
+
...(options.provider ? { provider: options.provider } : {}),
|
|
160
|
+
...(options.modelId ? { modelId: options.modelId } : {}),
|
|
161
|
+
});
|
|
134
162
|
if (options.json) {
|
|
135
163
|
console.log(formatModelsListJson(catalog));
|
|
136
164
|
return;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,8BAA8B,GAE/B,MAAM,6BAA6B,CAAC;AAErC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAEpC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,QAAQ,CACP,aAAa,EACb,2CAA2C,CAC5C;KACA,QAAQ,CAAC,cAAc,EAAE,gCAAgC,CAAC;KAC1D,MAAM,CACL,oBAAoB,EACpB,kDAAkD,EAClD,OAAO,CAAC,GAAG,EAAE,CACd;KACA,MAAM,CACL,wBAAwB,EACxB,uCAAuC,EACvC,OAAO,CAAC,GAAG,EAAE,CACd;KACA,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CACL,YAAY,EACZ,+EAA+E,CAChF;KACA,MAAM,CACL,kBAAkB,EAClB,6NAA6N,CAC9N;KACA,MAAM,CAAC,cAAc,EAAE,oEAAoE,CAAC;KAC5F,MAAM,CACL,iBAAiB,EACjB,gIAAgI,EAChI,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CACtC;KACA,MAAM,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;KACzD,MAAM,CACL,WAAW,EACX,mFAAmF,CACpF;KACA,MAAM,CACL,mBAAmB,EACnB,4EAA4E,CAC7E;KACA,MAAM,CACL,4BAA4B,EAC5B,uFAAuF,CACxF;KACA,MAAM,CACL,6BAA6B,EAC7B,0FAA0F,CAC3F;KACA,MAAM,CACL,yBAAyB,EACzB,uDAAuD,EACvD,CAAC,KAAa,EAAE,QAA8B,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAChF;KACA,MAAM,CACL,qBAAqB,EACrB,6CAA6C,CAC9C;KACA,MAAM,CACL,kCAAkC,EAClC,2GAA2G,EAC3G,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CACtC;KACA,MAAM,CACL,2BAA2B,EAC3B,mEAAmE,EACnE,MAAM,CACP;KACA,MAAM,CACL,8BAA8B,EAC9B,uFAAuF,CACxF;KACA,MAAM,CACL,KAAK,EACH,QAAgB,EAChB,YAAsB,EACtB,OAkBC,EACD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE;YACjD,GAAG,OAAO;YACV,sBAAsB,EAAE,+BAA+B,CAAC,YAAY,CAAC;YACrE,cAAc,EAAE,OAAO,CAAC,aAAa;SACtC,CAAC,CAAC;QAEH,wBAAwB,CAAC,MAAM,EAAE;YAC/B,MAAM,EAAE,yBAAyB,CAAC;gBAChC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,KAAK,EAAE,kBAAkB,EAAE;aAC5B,CAAC;YACF,WAAW,EAAE;gBACX,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;aACzD;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,SAAS,0BAA0B,CAAC,OAAgB;IAClD,OAAO,OAAO;SACX,MAAM,CACL,oBAAoB,EACpB,oEAAoE,EACpE,OAAO,CAAC,GAAG,EAAE,CACd;SACA,MAAM,CAAC,kBAAkB,EAAE,gDAAgD,CAAC;SAC5E,MAAM,CAAC,iBAAiB,EAAE,sDAAsD,CAAC;SACjF,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;AAE7E,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAC9C,WAAW,CACV,wFAAwF,CACzF;KACA,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CACT,0BAA0B,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,MAAM,gBAAgB,MAAM,CAAC,QAAQ,EAAE,CAC7F,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KAC/C,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,QAAQ,aAAa,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KAC/C,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACxD,CAAC;YACD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,QAAQ,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC;YACtC,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB;gBACtC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE;gBAClD,CAAC,CAAC,SAAS,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,aAAa,OAAO,GAAG,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;AAEhF,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KAC/C,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,OAAqD,EAAE,EAAE;IACtE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;YACxC,GAAG,OAAO,CAAC,IAAI;YACf,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CACX,iDAAiD,CAClD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAEjF,QAAQ;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mEAAmE,CAAC;KAChF,MAAM,CAAC,oBAAoB,EAAE,0DAA0D,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KACvG,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,OAA6C,EAAE,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-log-lines.d.ts","sourceRoot":"","sources":["../src/session-log-lines.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AA6C/B,kDAAkD;AAClD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"session-log-lines.d.ts","sourceRoot":"","sources":["../src/session-log-lines.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AA6C/B,kDAAkD;AAClD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CA4F/E;AAED,sDAAsD;AACtD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CA0CnF;AAED,mFAAmF;AACnF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAmCtF;AAUD,iCAAiC;AACjC,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAQtF"}
|
|
@@ -3,24 +3,24 @@ function classifyConductorSendError(message, code) {
|
|
|
3
3
|
const signal = `${message} ${code ?? ''}`;
|
|
4
4
|
if (isConductorAuthError(signal)) {
|
|
5
5
|
return {
|
|
6
|
-
category: 'conductor
|
|
7
|
-
recovery: '
|
|
6
|
+
category: 'conductor の認証障害',
|
|
7
|
+
recovery: '認証状態を確認し、表示された backend 固有の復旧手順で再試行してください',
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
if (/connection stalled repeatedly|connection|transport|network|timeout|timed out|deadline exceeded|unavailable|socket/i.test(signal)) {
|
|
11
11
|
return {
|
|
12
|
-
category: 'conductor
|
|
12
|
+
category: 'conductor の接続障害',
|
|
13
13
|
recovery: '接続状態を確認してから再試行してください',
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
if (/model blocked|content policy|safety/i.test(signal)) {
|
|
17
17
|
return {
|
|
18
|
-
category: 'conductor
|
|
18
|
+
category: 'conductor のモデル拒否',
|
|
19
19
|
recovery: 'モデル設定と入力内容を確認して再試行してください',
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
return {
|
|
23
|
-
category: 'conductor
|
|
23
|
+
category: 'conductor の実行障害',
|
|
24
24
|
recovery: 'エラー詳細を確認し、必要ならセッションを再試行してください',
|
|
25
25
|
};
|
|
26
26
|
}
|
|
@@ -67,6 +67,11 @@ export function formatHarnessLogBody(event) {
|
|
|
67
67
|
}
|
|
68
68
|
case 'permission.pending':
|
|
69
69
|
return renderSessionLogEvent(event);
|
|
70
|
+
case 'permission.cleanup': {
|
|
71
|
+
const worker = event.workerId ? ` worker=${event.workerId}` : '';
|
|
72
|
+
const ids = event.entries.map((entry) => entry.id).join(',');
|
|
73
|
+
return `permission.cleanup reason=${event.reason}${worker} count=${event.entries.length}${ids ? ` ids=${ids}` : ''}`;
|
|
74
|
+
}
|
|
70
75
|
case 'conductor.send': {
|
|
71
76
|
let line = `conductor.send n=${event.sendCount} status=${event.status} workerDone=${event.workerDispatches} workerFailed=${event.workerFailures}`;
|
|
72
77
|
if (event.status === 'error') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-log-lines.js","sourceRoot":"","sources":["../src/session-log-lines.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAO/B,SAAS,0BAA0B,CACjC,OAAe,EACf,IAAa;IAEb,MAAM,MAAM,GAAG,GAAG,OAAO,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;IAE1C,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"session-log-lines.js","sourceRoot":"","sources":["../src/session-log-lines.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-sinks.d.ts","sourceRoot":"","sources":["../src/session-sinks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,cAAc,CASlF;AAED,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,6CAA6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"session-sinks.d.ts","sourceRoot":"","sources":["../src/session-sinks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,cAAc,CASlF;AAED,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,6CAA6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,cAAc,CAyCpF;AAED,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,sBAA2B,GACnC,cAAc,CAShB"}
|
package/dist/session-sinks.js
CHANGED
|
@@ -43,6 +43,7 @@ export function createDialogueSink(options = {}) {
|
|
|
43
43
|
case 'session.continue':
|
|
44
44
|
case 'session.post_loop_wait':
|
|
45
45
|
case 'conductor.dispatch_hold':
|
|
46
|
+
case 'permission.cleanup':
|
|
46
47
|
case 'conductor.auth.recovery':
|
|
47
48
|
case 'conductor.auth.reconnect':
|
|
48
49
|
case 'conductor.transport.reconnect':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-sinks.js","sourceRoot":"","sources":["../src/session-sinks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAOlE,kDAAkD;AAClD,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjF,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,IAAI,EAAE,CAAC;YACT,WAAW,CAAC,0BAA0B,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAOD,6CAA6C;AAC7C,MAAM,UAAU,kBAAkB,CAAC,UAA+B,EAAE;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1E,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,gBAAgB;gBACnB,WAAW,CAAC,eAAe,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvE,MAAM;YACR,KAAK,gBAAgB;gBACnB,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;oBACxD,WAAW,CACT,gBAAgB,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CACpE,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,KAAK,kBAAkB,CAAC;YACxB,KAAK,0BAA0B,CAAC;YAChC,KAAK,iCAAiC,CAAC;YACvC,KAAK,gCAAgC,CAAC;YACtC,KAAK,+BAA+B,CAAC;YACrC,KAAK,iCAAiC,CAAC;YACvC,KAAK,8BAA8B,CAAC;YACpC,KAAK,sBAAsB,CAAC;YAC5B,KAAK,yBAAyB,CAAC;YAC/B,KAAK,cAAc,CAAC;YACpB,KAAK,eAAe,CAAC;YACrB,KAAK,uBAAuB,CAAC;YAC7B,KAAK,cAAc,CAAC;YACpB,KAAK,wBAAwB,CAAC;YAC9B,KAAK,qBAAqB,CAAC;YAC3B,KAAK,yBAAyB,CAAC;YAC/B,KAAK,kBAAkB,CAAC;YACxB,KAAK,wBAAwB,CAAC;YAC9B,KAAK,yBAAyB,CAAC;YAC/B,KAAK,yBAAyB,CAAC;YAC/B,KAAK,0BAA0B,CAAC;YAChC,KAAK,+BAA+B;gBAClC,MAAM;QACV,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAOD,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CACnC,UAAkC,EAAE;IAEpC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjF,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE,CAAC;YACT,WAAW,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"session-sinks.js","sourceRoot":"","sources":["../src/session-sinks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAOlE,kDAAkD;AAClD,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjF,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,IAAI,EAAE,CAAC;YACT,WAAW,CAAC,0BAA0B,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAOD,6CAA6C;AAC7C,MAAM,UAAU,kBAAkB,CAAC,UAA+B,EAAE;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1E,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,gBAAgB;gBACnB,WAAW,CAAC,eAAe,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvE,MAAM;YACR,KAAK,gBAAgB;gBACnB,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;oBACxD,WAAW,CACT,gBAAgB,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CACpE,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,KAAK,kBAAkB,CAAC;YACxB,KAAK,0BAA0B,CAAC;YAChC,KAAK,iCAAiC,CAAC;YACvC,KAAK,gCAAgC,CAAC;YACtC,KAAK,+BAA+B,CAAC;YACrC,KAAK,iCAAiC,CAAC;YACvC,KAAK,8BAA8B,CAAC;YACpC,KAAK,sBAAsB,CAAC;YAC5B,KAAK,yBAAyB,CAAC;YAC/B,KAAK,cAAc,CAAC;YACpB,KAAK,eAAe,CAAC;YACrB,KAAK,uBAAuB,CAAC;YAC7B,KAAK,cAAc,CAAC;YACpB,KAAK,wBAAwB,CAAC;YAC9B,KAAK,qBAAqB,CAAC;YAC3B,KAAK,yBAAyB,CAAC;YAC/B,KAAK,kBAAkB,CAAC;YACxB,KAAK,wBAAwB,CAAC;YAC9B,KAAK,yBAAyB,CAAC;YAC/B,KAAK,oBAAoB,CAAC;YAC1B,KAAK,yBAAyB,CAAC;YAC/B,KAAK,0BAA0B,CAAC;YAChC,KAAK,+BAA+B;gBAClC,MAAM;QACV,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAOD,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CACnC,UAAkC,EAAE;IAEpC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjF,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE,CAAC;YACT,WAAW,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/docs/config.md
CHANGED
|
@@ -107,7 +107,7 @@ profile / worker に `acp` がある worker は `--default-acp-*` / config `acp.
|
|
|
107
107
|
|
|
108
108
|
### Pi resource root
|
|
109
109
|
|
|
110
|
-
`conductor.backend: pi` のとき、Pi の標準ファイル名・ディレクトリを次の 2 層から解決します。プロジェクト層がユーザ層を上書きします。
|
|
110
|
+
`conductor.backend: pi` のとき、Pi 1.x の標準ファイル名・ディレクトリを次の 2 層から解決します。プロジェクト層がユーザ層を上書きします。
|
|
111
111
|
|
|
112
112
|
| 層 | 既定パス |
|
|
113
113
|
|----|----------|
|
|
@@ -118,14 +118,16 @@ profile / worker に `acp` がある worker は `--default-acp-*` / config `acp.
|
|
|
118
118
|
|
|
119
119
|
- `settings.json` / `auth.json`: user → project の deep merge。credential は provider 単位で project entry を優先します。
|
|
120
120
|
- `models.json`: Pi 標準の `providers` / `models` / built-in `modelOverrides` / request headers を model 解決へ反映します。
|
|
121
|
-
- `extensions/`: ExtensionAPI の tool を読み込み、fixed harness tools
|
|
121
|
+
- `extensions/`: ExtensionAPI の tool を読み込み、fixed harness tools と local extension tools を conductor の custom tools として追加します。同名の harness tool は上書きしません。MCP は下記の Pi 公式 extension が担当します。
|
|
122
122
|
- `skills/`: `SKILL.md` を読み込み、model invocation が有効な skill 本文を compiled system prompt の後ろに追加します。`/skill:<name>` で明示的に展開できます。
|
|
123
123
|
- `prompts/`: Markdown template を読み込み、`/name args` の user prompt を Pi 標準の引数置換で展開します。
|
|
124
|
-
- `themes/`: Pi 標準 JSON として読み込み、project 同名を優先します。conductor は headless `
|
|
124
|
+
- `themes/`: Pi 標準 JSON として読み込み、project 同名を優先します。conductor は headless `AgentSession` のため TUI renderer がなく、theme の色・表示設定はモデル入出力には適用しません。
|
|
125
|
+
|
|
126
|
+
Pi の認証 CLI は provider 単位です。`ensemble auth login --provider <id>` は API-key provider なら secret prompt の値を user root の `auth.json`(既定 `~/.ensemble/pi/auth.json`)へ保存し、OAuth provider なら Pi 1.x の `ModelRuntime.login` を TTY / stderr 経由で実行します。`--provider` を省略した場合は `settings.json` の `defaultProvider` または選択モデルから解決します。`logout` / `status` も同じ provider 解決を使います。project `auth.json` は既存の project-over-user 読取優先を維持しますが、login の書込み先にはなりません。project 層の明示的な OAuth credential は runtime が安全に refresh できないため実行時には使わず、user 層でのログインを案内します。Pi の MCP HTTP OAuth は conductor provider OAuth とは別に、公式 MCP extension が `mcp-auth.json` と対話フローを管理します。`ensemble models list` は `ModelRegistry` と project resource の解決結果から認証済み model だけを表示します。
|
|
125
127
|
|
|
126
128
|
#### `settings.json` の headless 対応範囲
|
|
127
129
|
|
|
128
|
-
conductor は `
|
|
130
|
+
conductor は Pi 1.x の `createAgentSession` / `DefaultResourceLoader` を headless で使います。TUI と package manager は起動しないため、`settings.json` は Pi 標準のファイル名と resource path の意味を保ちますが、headless conductor が実際に参照するキーだけを契約とします。
|
|
129
131
|
|
|
130
132
|
実際に効くキーは次のとおりです。
|
|
131
133
|
|
|
@@ -141,7 +143,7 @@ Pi の `settings.md` にあるが headless conductor が適用しないキーは
|
|
|
141
143
|
|------------------------------|------------------|
|
|
142
144
|
| `defaultThinkingLevel` / `modelThinkingLevels` / `thinkingBudgets` / `enabledModels` | thinking level、budget、model cycling の設定 |
|
|
143
145
|
| `hideThinkingBlock` / `showCacheMissNotices` / `cacheWarming` / `steeringMode` / `followUpMode` | transcript 表示、cache、対話キューの設定 |
|
|
144
|
-
| `defaultTools` / `codemode.*` | Pi built-in coding tools の選択。conductor は harness / MCP / local extension
|
|
146
|
+
| `defaultTools` / `codemode.*` | Pi built-in coding tools の選択。conductor は built-in coding tools を無効にし、harness / MCP / local extension と公式 codemode/tool-search extension の loadout を使います。 |
|
|
145
147
|
| `packages` | Pi package の install・解決。package が提供する resource は自動導入しません。 |
|
|
146
148
|
| `enableSkillCommands` | skill command の登録 toggle。読み込んだ skill の `/skill:<name>` 展開可否はこのキーで変更できません。 |
|
|
147
149
|
| `sessionDir` / `compaction.*` / `branchSummary.*` | Pi の session・compact・branch summary。session は harness の `.ensemble/pi/sessions/` が管理します。 |
|
|
@@ -209,17 +211,17 @@ MCP 設定は次の 2 層から読み込み、`mcpServers` のサーバー名単
|
|
|
209
211
|
}
|
|
210
212
|
```
|
|
211
213
|
|
|
212
|
-
解決済み設定は conductor の両 backend に同じ map として渡す。Cursor SDK では `Agent.create` / `Agent.resume` の inline MCP として、Pi では
|
|
214
|
+
解決済み設定は conductor の両 backend に同じ map として渡す。Cursor SDK では `Agent.create` / `Agent.resume` の inline MCP として、Pi では Pi 1.x の `DefaultResourceLoader` に `createMcpExtension({ loadConfig })` を extension factory として登録し、`createAgentSession` の起動時に注入する。Pi 側で `.pi/mcp.json` へ同期・コピー・symlink は行わず、resume 時も harness が解決した同じ map を再注入する。sidecar にはこの map の canonical SHA-256 digest だけを保存し、resume 時に現在の digest と比較するため、設定変更は新しい session を要求する。digest に秘密値そのものは保存しない。MCP 接続の管理、tool discovery、OAuth、resource tools は Pi 公式 extension に委ね、core は MCP client/transport を実装しない。
|
|
213
215
|
|
|
214
|
-
|
|
216
|
+
`env` / `headers` / `cwd` は harness 境界で Cursor 形式の placeholder を解決してから Pi 公式 extension に渡す。`${env:VAR}` は現在の process environment の値、`${workspaceFolder}` / `${workspaceFolderBasename}` は conductor の cwd へ変換し、値が見つからない placeholder は literal のまま渡さず明確なエラーにする。Pi 標準の `$VAR` / `${VAR}` は公式 resolver に委ねる。Pi は `stdio` と Streamable HTTP (`http`) をサポートするが、shared `mcp.json` の `sse` 定義は Pi 1.x ではサポートしないため、Pi conductor の起動時に明確なエラーにする。HTTP の `auth` (`CLIENT_ID` / `CLIENT_SECRET` / `scopes`) は Pi の MCP OAuth 設定へ渡され、認可フローと credential 保存は公式 extension が管理する。`.cursor/mcp.json` や `.pi/mcp.json` へのコピー・symlink、`settings.json` の書き換えは行わず、ACP worker にはこの設定を渡さない。MCP server tool は公式名 `mcp__<server>__<tool>`(長すぎる・衝突する場合は Pi の hash suffix)で公開される。resources がある場合は公式の `list_mcp_resources`、`list_mcp_resource_templates`、`read_mcp_resource` が提供される。`codemode` / `tool_search` の exposure は公式 extension の設定に従う。
|
|
215
217
|
|
|
216
|
-
Pi
|
|
218
|
+
Pi backend は `@earendil-works/pi-coding-agent@1.0.x` の公式 MCP extension を使う。MCP 未設定時は extension に空の解決結果を渡し、conductor は harness tools と local extension tools だけで起動する。
|
|
217
219
|
|
|
218
|
-
JSON が不正、または `mcpServers` / サーバー定義の形式が不正な場合は、そのファイルを `[mcp]` 警告とともにスキップする。もう一方の層が有効ならそちらは引き続き読み込み、両方をスキップした場合は MCP なしで起動する。MCP
|
|
220
|
+
JSON が不正、または `mcpServers` / サーバー定義の形式が不正な場合は、そのファイルを `[mcp]` 警告とともにスキップする。もう一方の層が有効ならそちらは引き続き読み込み、両方をスキップした場合は MCP なしで起動する。MCP のホットリロードは行わない。実行中の session の設定を変更した場合は、resume 時に digest mismatch として fail fast するため、新しい session を開始する。
|
|
219
221
|
|
|
220
222
|
## 秘密情報を config に書かない
|
|
221
223
|
|
|
222
|
-
**token 本体を config に平文で保存しない。** 認証は環境変数、`gh auth login
|
|
224
|
+
**token 本体を config に平文で保存しない。** 認証は環境変数、`gh auth login`、Cursor の `ensemble auth login`、または Pi の provider 単位 `ensemble auth login` / `ModelRuntime` を使う。MCP HTTP OAuth の credential は Pi 公式 extension の管理領域に保存する。
|
|
223
225
|
|
|
224
226
|
## スキーマ外キー
|
|
225
227
|
|
package/docs/settings.md
CHANGED
|
@@ -28,7 +28,7 @@ CLI > 環境変数 > project config > user config > コード default
|
|
|
28
28
|
|
|
29
29
|
`profile.default` / `conductor.model` / `acp.defaultPreset` など。設計判断は [ADR 0020](https://github.com/otolab/agents-ensemble/blob/main/docs/adr/0020-ensemble-config-setting-resolution.md)。
|
|
30
30
|
|
|
31
|
-
`conductor.backend` は、選択した profile の `conductor.backend` を project/user の deep merge 済み config より優先し、どちらも未指定なら `cursor` を使います。`cursor` は Cursor SDK 経路、`pi` は Pi
|
|
31
|
+
`conductor.backend` は、選択した profile の `conductor.backend` を project/user の deep merge 済み config より優先し、どちらも未指定なら `cursor` を使います。`cursor` は Cursor SDK 経路、`pi` は Pi 1.x `createAgentSession` 経路を選びます。Pi は compiled conductor instructions を native system prompt に載せ、`~/.ensemble/pi` と `<repoRoot>/.ensemble/pi` の `settings.json` / `auth.json` / `models.json` / `extensions/` / `skills/` / `prompts/` / `themes/` を解決します。skills は system prompt へ追加し、prompts は `/name args` で展開します。themes は headless conductor のため読み込み・project 同名解決のみ行い、TUI 表示には使いません。root は `conductor.pi.agentDir` / `conductor.pi.projectDir` で上書きできます。`.ensemble/pi/SYSTEM.md` / `APPEND_SYSTEM.md` は無視します。`ensemble auth login|logout|status` は backend に分岐し、Pi では provider 単位に `ModelRuntime` を使います。API key は TTY の secret prompt から user 層へ保存し、OAuth は Pi の OAuth flow を stderr 対話で実行します(SSH でも URL / device code を利用できます)。MCP HTTP OAuth は Pi 公式 MCP extension が別の credential store で扱います。resume では sidecar に保存した backend と起動時の解決結果が一致しない場合、次のエラーで conductor を起動せず失敗します。
|
|
32
32
|
|
|
33
33
|
```text
|
|
34
34
|
Session sidecar conductorBackend mismatch: pi !== cursor
|
|
@@ -62,7 +62,7 @@ config キーなし。CI・スクリプト・端末検出、または 1 回限
|
|
|
62
62
|
|------|--------|
|
|
63
63
|
| GitHub API | `GITHUB_TOKEN` > `GH_TOKEN` > (`allowGhAuthTokenFallback: true` 時のみ)`gh auth token` |
|
|
64
64
|
| conductor (cursor) | `CURSOR_API_KEY` > `~/.cursor/sdk/auth.json`(`ensemble auth login`) |
|
|
65
|
-
| conductor (pi) |
|
|
65
|
+
| conductor (pi) | project `auth.json` の読取優先 > user `ModelRuntime`(`~/.ensemble/pi/auth.json`、`conductor.pi.agentDir` で上書き) > `settings.json` fallback > provider 環境変数。`ensemble auth` は user 層へ provider 単位で保存。project 層の明示的な OAuth credential は refresh できないため使わず、user 層の runtime へログインする |
|
|
66
66
|
| worker ACP(preset 依存) | preset ごとに README / ADR 0019 参照 |
|
|
67
67
|
|
|
68
68
|
## 一覧 — Phase 1(config.yaml)
|
|
@@ -114,7 +114,7 @@ TUI 設定は `loadEnsembleConfig` 結果を `createIssueSessionTuiHost` へ渡
|
|
|
114
114
|
|------|----------|------------------------|
|
|
115
115
|
| GitHub API token | `GITHUB_TOKEN` / `GH_TOKEN` | `github.auth.allowGhAuthTokenFallback` のみ |
|
|
116
116
|
| conductor API key (cursor) | `CURSOR_API_KEY` | —(`ensemble auth login` は別経路) |
|
|
117
|
-
| conductor API key (pi) | provider ごとの環境変数(Pi の env mapping) | Pi `auth.json` / `settings.json` にも設定可能 |
|
|
117
|
+
| conductor API key (pi) | provider ごとの環境変数(Pi の env mapping) | `ensemble auth login --provider <id>`、Pi `auth.json` / `settings.json` にも設定可能 |
|
|
118
118
|
|
|
119
119
|
## 一覧 — 別ファイル
|
|
120
120
|
|
|
@@ -138,7 +138,7 @@ TUI 設定は `loadEnsembleConfig` 結果を `createIssueSessionTuiHost` へ渡
|
|
|
138
138
|
| チーム / 個人の恒久既定(モデル、worktree、monitor) | `~/.ensemble/config.yaml` または project `.ensemble/config.yaml` |
|
|
139
139
|
| CI で 1 ジョブだけ上書き | 環境変数(`CONDUCTOR_MODEL_ID` 等) |
|
|
140
140
|
| 1 回限りの実行 | CLI フラグ(初回メッセージは `ensemble issue <ref> [message...]`) |
|
|
141
|
-
| token | Cursor: 環境変数 or `ensemble auth login`、Pi: Pi
|
|
141
|
+
| token | Cursor: 環境変数 or `ensemble auth login`、Pi: `ensemble auth login --provider <id>` / Pi `auth.json` / provider 環境変数、GitHub: `gh auth login`(いずれも config に書かない) |
|
|
142
142
|
| tmux 内で Issue リンクを短縮表示 | `~/.ensemble/config.yaml` に `tui.forceHyperlink: on`(または env `FORCE_HYPERLINK=1`) |
|
|
143
143
|
| worker ごとの ACP / cwd | `profile.yaml` |
|
|
144
144
|
| conductor の MCP | `mcp.json` |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agents-ensemble/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "ensemble CLI — Issue-based agent orchestration",
|
|
6
6
|
"bin": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"react": "19.2.0",
|
|
18
18
|
"react-ink-textarea": "npm:@otolab/react-ink-textarea@0.4.1-otolab.3",
|
|
19
19
|
"string-width": "8.1.0",
|
|
20
|
-
"@agents-ensemble/core": "0.
|
|
20
|
+
"@agents-ensemble/core": "0.9.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/js-yaml": "4.0.9",
|