oh-my-copilot 5.6.2 → 5.7.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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -0
- package/bridge/__pycache__/gyoshu_bridge.cpython-312.pyc +0 -0
- package/bridge/claude-md-coordinator.cjs +2 -2
- package/bridge/cli.cjs +78578 -75769
- package/bridge/mcp-server.cjs +36510 -32259
- package/bridge/runtime-cli.cjs +95 -34
- package/bridge/team-mcp.cjs +95 -34
- package/bridge/team.js +131 -70
- package/dist/__tests__/run-cjs-fail-closed-timeout.test.d.ts +2 -0
- package/dist/__tests__/run-cjs-fail-closed-timeout.test.d.ts.map +1 -0
- package/dist/__tests__/run-cjs-fail-closed-timeout.test.js +68 -0
- package/dist/__tests__/run-cjs-fail-closed-timeout.test.js.map +1 -0
- package/dist/__tests__/session-end-process-exit.test.js +70 -2
- package/dist/__tests__/session-end-process-exit.test.js.map +1 -1
- package/dist/cli/commands/__tests__/smoke-tier2.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/smoke-tier2.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/smoke-tier2.test.js +72 -0
- package/dist/cli/commands/__tests__/smoke-tier2.test.js.map +1 -0
- package/dist/cli/commands/smoke.d.ts +36 -0
- package/dist/cli/commands/smoke.d.ts.map +1 -0
- package/dist/cli/commands/smoke.js +169 -0
- package/dist/cli/commands/smoke.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +39 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/constants/names.d.ts +1 -0
- package/dist/constants/names.d.ts.map +1 -1
- package/dist/constants/names.js +1 -0
- package/dist/constants/names.js.map +1 -1
- package/dist/hooks/session-end/index.d.ts +2 -3
- package/dist/hooks/session-end/index.d.ts.map +1 -1
- package/dist/hooks/session-end/index.js +3 -10
- package/dist/hooks/session-end/index.js.map +1 -1
- package/dist/hooks/session-end/wiki-foreground-bootstrap.d.ts +17 -0
- package/dist/hooks/session-end/wiki-foreground-bootstrap.d.ts.map +1 -0
- package/dist/hooks/session-end/wiki-foreground-bootstrap.js +20 -0
- package/dist/hooks/session-end/wiki-foreground-bootstrap.js.map +1 -0
- package/dist/lib/__tests__/atomic-write.test.js +32 -1
- package/dist/lib/__tests__/atomic-write.test.js.map +1 -1
- package/dist/lib/__tests__/mode-state-lock.test.js +121 -12
- package/dist/lib/__tests__/mode-state-lock.test.js.map +1 -1
- package/dist/lib/atomic-write.d.ts +13 -3
- package/dist/lib/atomic-write.d.ts.map +1 -1
- package/dist/lib/atomic-write.js +29 -15
- package/dist/lib/atomic-write.js.map +1 -1
- package/dist/lib/mode-state-io.d.ts +2 -2
- package/dist/lib/mode-state-io.d.ts.map +1 -1
- package/dist/lib/mode-state-io.js +16 -10
- package/dist/lib/mode-state-io.js.map +1 -1
- package/dist/mcp/__tests__/host-smoke-tool.test.d.ts +2 -0
- package/dist/mcp/__tests__/host-smoke-tool.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/host-smoke-tool.test.js +174 -0
- package/dist/mcp/__tests__/host-smoke-tool.test.js.map +1 -0
- package/dist/mcp/disable-tools.d.ts.map +1 -1
- package/dist/mcp/disable-tools.js +1 -0
- package/dist/mcp/disable-tools.js.map +1 -1
- package/dist/mcp/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tool-registry.js +2 -0
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/smoke/__tests__/copilot-sdk-driver.test.d.ts +2 -0
- package/dist/smoke/__tests__/copilot-sdk-driver.test.d.ts.map +1 -0
- package/dist/smoke/__tests__/copilot-sdk-driver.test.js +561 -0
- package/dist/smoke/__tests__/copilot-sdk-driver.test.js.map +1 -0
- package/dist/smoke/__tests__/copilot-sdk-scenarios.test.d.ts +2 -0
- package/dist/smoke/__tests__/copilot-sdk-scenarios.test.d.ts.map +1 -0
- package/dist/smoke/__tests__/copilot-sdk-scenarios.test.js +311 -0
- package/dist/smoke/__tests__/copilot-sdk-scenarios.test.js.map +1 -0
- package/dist/smoke/__tests__/copilot-session-eval.test.d.ts +2 -0
- package/dist/smoke/__tests__/copilot-session-eval.test.d.ts.map +1 -0
- package/dist/smoke/__tests__/copilot-session-eval.test.js +264 -0
- package/dist/smoke/__tests__/copilot-session-eval.test.js.map +1 -0
- package/dist/smoke/__tests__/copilot-smoke.test.d.ts +2 -0
- package/dist/smoke/__tests__/copilot-smoke.test.d.ts.map +1 -0
- package/dist/smoke/__tests__/copilot-smoke.test.js +482 -0
- package/dist/smoke/__tests__/copilot-smoke.test.js.map +1 -0
- package/dist/smoke/copilot-binary.d.ts +21 -0
- package/dist/smoke/copilot-binary.d.ts.map +1 -0
- package/dist/smoke/copilot-binary.js +46 -0
- package/dist/smoke/copilot-binary.js.map +1 -0
- package/dist/smoke/copilot-sdk-driver.d.ts +186 -0
- package/dist/smoke/copilot-sdk-driver.d.ts.map +1 -0
- package/dist/smoke/copilot-sdk-driver.js +622 -0
- package/dist/smoke/copilot-sdk-driver.js.map +1 -0
- package/dist/smoke/copilot-sdk-scenarios.d.ts +159 -0
- package/dist/smoke/copilot-sdk-scenarios.d.ts.map +1 -0
- package/dist/smoke/copilot-sdk-scenarios.js +510 -0
- package/dist/smoke/copilot-sdk-scenarios.js.map +1 -0
- package/dist/smoke/copilot-session-eval.d.ts +90 -0
- package/dist/smoke/copilot-session-eval.d.ts.map +1 -0
- package/dist/smoke/copilot-session-eval.js +323 -0
- package/dist/smoke/copilot-session-eval.js.map +1 -0
- package/dist/smoke/copilot-smoke.d.ts +228 -0
- package/dist/smoke/copilot-smoke.d.ts.map +1 -0
- package/dist/smoke/copilot-smoke.js +818 -0
- package/dist/smoke/copilot-smoke.js.map +1 -0
- package/dist/smoke/process-utils.d.ts +47 -0
- package/dist/smoke/process-utils.d.ts.map +1 -0
- package/dist/smoke/process-utils.js +99 -0
- package/dist/smoke/process-utils.js.map +1 -0
- package/dist/team/__tests__/tmux-session.pane-env.test.d.ts +2 -0
- package/dist/team/__tests__/tmux-session.pane-env.test.d.ts.map +1 -0
- package/dist/team/__tests__/tmux-session.pane-env.test.js +52 -0
- package/dist/team/__tests__/tmux-session.pane-env.test.js.map +1 -0
- package/dist/team/tmux-session.d.ts +7 -0
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +80 -18
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/tools/host-smoke-tool.d.ts +34 -0
- package/dist/tools/host-smoke-tool.d.ts.map +1 -0
- package/dist/tools/host-smoke-tool.js +133 -0
- package/dist/tools/host-smoke-tool.js.map +1 -0
- package/docs/CLAUDE.md +1 -1
- package/docs/DEVELOPERS.md +101 -0
- package/docs/HOOKS.md +1 -1
- package/docs/MIGRATION.md +71 -0
- package/docs/REFERENCE.md +42 -1
- package/docs/TOOLS.md +32 -1
- package/package.json +11 -2
- package/plugin.json +1 -1
- package/scripts/dev/repro-state-lock.mjs +1 -1
- package/scripts/lib/atomic-write.mjs +4 -2
- package/scripts/lib/state-lock.mjs +21 -12
- package/scripts/run.cjs +13 -3
- package/scripts/wiki-session-end.mjs +2 -1
- package/templates/hooks/lib/atomic-write.mjs +4 -2
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tier 2 of `omg smoke copilot`: scenario definitions and the pure evaluators
|
|
3
|
+
* for the SDK static checks (`sdk.*`) and the scenario checks (`scn.<name>.*`).
|
|
4
|
+
* No SDK, process or network access here, so the unit tests replay captured
|
|
5
|
+
* event streams through the same functions the live driver uses.
|
|
6
|
+
*/
|
|
7
|
+
import { type CopilotEvent, type SmokeCheck } from './copilot-session-eval.js';
|
|
8
|
+
export type Scenario = 'smoke' | 'guardrail' | 'skill' | 'delegate';
|
|
9
|
+
export declare const ALL_SCENARIOS: readonly Scenario[];
|
|
10
|
+
/** About 2 premium requests (one per scenario). */
|
|
11
|
+
export declare const DEFAULT_SCENARIOS: readonly Scenario[];
|
|
12
|
+
export declare const PLUGIN_NAME = "oh-my-copilot";
|
|
13
|
+
export declare const DELEGATE_AGENT = "oh-my-copilot:architect";
|
|
14
|
+
export declare const MIN_PROTOCOL_VERSION = 3;
|
|
15
|
+
export declare const SDK_PACKAGE = "@github/copilot-sdk";
|
|
16
|
+
/** Lane B's CLI keys "pure skip" exit code 2 on this exact prefix. */
|
|
17
|
+
export declare const SDK_MISSING_DETAIL = "@github/copilot-sdk not installed \u2014 npm i -g @github/copilot-sdk --omit=optional --ignore-scripts";
|
|
18
|
+
/**
|
|
19
|
+
* Never offered: our own `host_smoke` MCP tool (a smoke that can start a smoke).
|
|
20
|
+
* MCP tools are named `<server>-<tool>` (server = the first `.mcp.json` key);
|
|
21
|
+
* `t:host_smoke` / `t(host_smoke)` match nothing.
|
|
22
|
+
*/
|
|
23
|
+
export declare function hostSmokeToolName(mcpServer: string): string;
|
|
24
|
+
/** Built-in shell and file-writing tools, removed for scenarios that must not use them. */
|
|
25
|
+
export declare const NO_SHELL_OR_WRITE_TOOLS: readonly ["powershell", "shell", "create", "edit"];
|
|
26
|
+
export declare const NO_WRITE_TOOLS: readonly ["create", "edit"];
|
|
27
|
+
/** The subset of the SDK's PermissionRequest the policies read. */
|
|
28
|
+
export interface PermissionRequestLike {
|
|
29
|
+
kind?: string;
|
|
30
|
+
fullCommandText?: string;
|
|
31
|
+
path?: unknown;
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
}
|
|
34
|
+
/** Where a scenario may act: the sandbox project and the plugin under test. */
|
|
35
|
+
export interface PermitContext {
|
|
36
|
+
projectDir: string;
|
|
37
|
+
pluginRoot: string;
|
|
38
|
+
platform?: NodeJS.Platform;
|
|
39
|
+
}
|
|
40
|
+
export interface ScenarioSpec {
|
|
41
|
+
name: Scenario;
|
|
42
|
+
prompt: string;
|
|
43
|
+
/** Built-in tools removed for this scenario; the driver adds {@link hostSmokeToolName}. */
|
|
44
|
+
excludedTools: string[];
|
|
45
|
+
/** Approve this permission request; everything else is rejected. */
|
|
46
|
+
permit: (req: PermissionRequestLike, ctx: PermitContext) => boolean;
|
|
47
|
+
}
|
|
48
|
+
/** The one command the guardrail scenario may run (should our preToolUse hook not deny it first). */
|
|
49
|
+
export declare const GUARDRAIL_COMMAND: RegExp;
|
|
50
|
+
/** Only the exact guardrail push, and only from the sandbox project when the request names a cwd. */
|
|
51
|
+
export declare function permitGuardrailPush(req: PermissionRequestLike, ctx: PermitContext): boolean;
|
|
52
|
+
/** Reads only; when the request carries a path it must be under the plugin root or the sandbox project. */
|
|
53
|
+
export declare function permitScopedRead(req: PermissionRequestLike, ctx: PermitContext): boolean;
|
|
54
|
+
export declare const SCENARIOS: Record<Scenario, ScenarioSpec>;
|
|
55
|
+
/** The session's excludedTools for a scenario: its built-ins plus our host_smoke tool. */
|
|
56
|
+
export declare function scenarioExcludedTools(name: Scenario, mcpServer: string): string[];
|
|
57
|
+
/** Check ids a scenario yields, in report order (stable; Lane B's docs list them). */
|
|
58
|
+
export declare function scenarioCheckIds(name: Scenario): string[];
|
|
59
|
+
export declare const SDK_STATIC_IDS: readonly ["sdk.available", "sdk.runtime", "sdk.plugins", "sdk.skills", "sdk.agents", "sdk.mcp", "sdk.tools_excluded"];
|
|
60
|
+
/** Every sdk.* and scn.* id failed with one detail (SDK missing, binary missing, runtime start failure). */
|
|
61
|
+
export declare function failedTier2Checks(scenarios: readonly Scenario[], detail: string, from?: 'all' | 'after-available'): SmokeCheck[];
|
|
62
|
+
/** Copilot CLI rejects `--max-ai-credits` below this (also in `--headless` runtime mode, CLI 1.0.91). */
|
|
63
|
+
export declare const RUNTIME_MIN_MAX_CREDITS = 30;
|
|
64
|
+
/** Reported for scenarios not started once the run's credit cap was reached. */
|
|
65
|
+
export declare const CREDIT_CAP_SKIP_DETAIL = "skipped: credit cap reached";
|
|
66
|
+
/** A scenario's checks all failed with one detail (not started). */
|
|
67
|
+
export declare function skippedScenarioChecks(name: Scenario, detail: string): SmokeCheck[];
|
|
68
|
+
/** An RPC result or the error message it failed with. */
|
|
69
|
+
export type Rpc<T = unknown> = {
|
|
70
|
+
ok: true;
|
|
71
|
+
value: T;
|
|
72
|
+
} | {
|
|
73
|
+
ok: false;
|
|
74
|
+
error: string;
|
|
75
|
+
};
|
|
76
|
+
export declare function evaluateSdkRuntime(status: Rpc<{
|
|
77
|
+
version?: unknown;
|
|
78
|
+
protocolVersion?: unknown;
|
|
79
|
+
}>, binVersion: string | null, model: string): SmokeCheck;
|
|
80
|
+
export declare function evaluateSdkPlugins(plugins: Rpc, packageVersion: string | null): SmokeCheck;
|
|
81
|
+
export declare function evaluateSdkSkills(skills: Rpc, root: string, skillDirs: string[], platform?: NodeJS.Platform): SmokeCheck;
|
|
82
|
+
export declare function evaluateSdkAgents(agents: Rpc, agentFiles: string[]): SmokeCheck;
|
|
83
|
+
export declare function evaluateSdkMcp(mcp: Rpc, tools: Rpc, server: string, expected: number | string): SmokeCheck;
|
|
84
|
+
/**
|
|
85
|
+
* `excludedTools` really removed our host_smoke tool: it is absent from the
|
|
86
|
+
* session's initialized tool list (`session.rpc.tools.getCurrentMetadata`),
|
|
87
|
+
* while other tools of the same server are present (else the absence proves
|
|
88
|
+
* nothing, e.g. the MCP tools were never offered).
|
|
89
|
+
*/
|
|
90
|
+
export declare function evaluateSdkToolsExcluded(meta: Rpc, server: string): SmokeCheck;
|
|
91
|
+
/**
|
|
92
|
+
* Split runtime log text into windows by each line's leading ISO timestamp:
|
|
93
|
+
* window i holds lines stamped in [starts[i], starts[i+1]); the last window is
|
|
94
|
+
* open-ended. Lines before starts[0] are dropped; unstamped (continuation)
|
|
95
|
+
* lines follow the previous stamped line. Attributing by time, not byte
|
|
96
|
+
* offset, keeps a late SessionEnd line of scenario N out of scenario N+1.
|
|
97
|
+
*/
|
|
98
|
+
export declare function sliceLogByTime(text: string, starts: number[]): string[];
|
|
99
|
+
export interface ScenarioRun {
|
|
100
|
+
name: Scenario;
|
|
101
|
+
events: CopilotEvent[];
|
|
102
|
+
/** A `session.idle` arrived for the prompt. */
|
|
103
|
+
idle: boolean;
|
|
104
|
+
timedOut: boolean;
|
|
105
|
+
timeoutMs: number;
|
|
106
|
+
/** createSession/send threw. */
|
|
107
|
+
error?: string;
|
|
108
|
+
/** Debug-log lines written while this scenario ran (null: no log found). */
|
|
109
|
+
logText: string | null;
|
|
110
|
+
/** guardrail: `git for-each-ref` output of the bare remote (null: could not inspect). */
|
|
111
|
+
remoteRefs?: string | null;
|
|
112
|
+
model: string;
|
|
113
|
+
/** The run's credit cap (`--max-credits`). */
|
|
114
|
+
maxCredits: number;
|
|
115
|
+
/** What was left of {@link maxCredits} when this scenario started (default: all of it). */
|
|
116
|
+
budget?: number;
|
|
117
|
+
/** The driver aborted the turn because `assistant.usage` credits passed {@link budget}. */
|
|
118
|
+
capped?: boolean;
|
|
119
|
+
}
|
|
120
|
+
export interface ScenarioCost {
|
|
121
|
+
premiumRequests: number;
|
|
122
|
+
credits: number;
|
|
123
|
+
}
|
|
124
|
+
/** AI credits billed by one `assistant.usage` event (0 for any other event). */
|
|
125
|
+
export declare function usageCredits(event: CopilotEvent): number;
|
|
126
|
+
/**
|
|
127
|
+
* Prefer `session.shutdown` totals (emitted at disconnect); else sum
|
|
128
|
+
* `assistant.usage`: credits from `copilotUsage.totalNanoAiu`, premium
|
|
129
|
+
* requests counted per user-initiated call (agent-initiated follow-ups of the
|
|
130
|
+
* same turn are not billed again).
|
|
131
|
+
*/
|
|
132
|
+
export declare function scenarioCost(events: CopilotEvent[]): ScenarioCost & {
|
|
133
|
+
source: string;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Hook stderr lines from our adapter (`[omg-hook]`) or hook runner
|
|
137
|
+
* (`[run.cjs]`, e.g. a timeout). A hook that exits 0 has its stderr logged as
|
|
138
|
+
* `[hook stderr]` lines; one that exits non-zero (fail-closed, e.g. 124) as a
|
|
139
|
+
* multi-line `[ERROR] ... execution failed` entry whose stderr starts with
|
|
140
|
+
* `Stderr: ` (Copilot CLI 1.0.91). Both forms count.
|
|
141
|
+
*/
|
|
142
|
+
export declare function adapterErrorLines(logText: string): string[];
|
|
143
|
+
/** Hook script names mentioned in adapter error lines (e.g. wiki-session-end.mjs). */
|
|
144
|
+
export declare function hookScriptNames(lines: string[]): string[];
|
|
145
|
+
export declare function evaluateScenario(run: ScenarioRun): {
|
|
146
|
+
checks: SmokeCheck[];
|
|
147
|
+
cost: ScenarioCost;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* An explicit request wins. Otherwise the first listed non-`auto` model whose
|
|
151
|
+
* id looks cheap; when the runtime lists only `auto` (Copilot CLI 1.0.91 for
|
|
152
|
+
* individual accounts) the session config omits `model` and the runtime routes.
|
|
153
|
+
*/
|
|
154
|
+
export declare function chooseModel(listed: string[], requested?: string): {
|
|
155
|
+
model?: string;
|
|
156
|
+
label: string;
|
|
157
|
+
note: string;
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=copilot-sdk-scenarios.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-sdk-scenarios.d.ts","sourceRoot":"","sources":["../../src/smoke/copilot-sdk-scenarios.ts"],"names":[],"mappings":"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"}
|