@github/copilot-sdk-darwin-x64 0.0.1 → 1.0.13-preview.6
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/animations/app-install-nudge.json.gz +0 -0
- package/animations/banner.json.gz +0 -0
- package/builtin/customize-cloud-agent/SKILL.md +254 -0
- package/builtin/discover-resources/SKILL.md +35 -0
- package/builtin/github-pr-media/SKILL.md +108 -0
- package/builtin-skills/customize-cloud-agent/SKILL.md +254 -0
- package/builtin-skills/discover-resources/SKILL.md +35 -0
- package/builtin-skills/github-pr-media/SKILL.md +108 -0
- package/copilot-sdk/canvas.d.ts +126 -0
- package/copilot-sdk/client.d.ts +478 -0
- package/copilot-sdk/copilotRequestHandler.d.ts +85 -0
- package/copilot-sdk/docs/agent-author.md +295 -0
- package/copilot-sdk/docs/examples.md +682 -0
- package/copilot-sdk/docs/extensions.md +81 -0
- package/copilot-sdk/docs/factories.md +279 -0
- package/copilot-sdk/docs/factory-patterns.md +194 -0
- package/copilot-sdk/extension.d.ts +59 -0
- package/copilot-sdk/extension.js +11399 -0
- package/copilot-sdk/factory.d.ts +301 -0
- package/copilot-sdk/ffiRuntimeHost.d.ts +35 -0
- package/copilot-sdk/generated/rpc.d.ts +24623 -0
- package/copilot-sdk/generated/session-events.d.ts +11117 -0
- package/copilot-sdk/index.d.ts +15 -0
- package/copilot-sdk/index.js +11540 -0
- package/copilot-sdk/runtimeArtifacts.d.ts +6 -0
- package/copilot-sdk/sdkProtocolVersion.d.ts +10 -0
- package/copilot-sdk/session.d.ts +331 -0
- package/copilot-sdk/sessionFsProvider.d.ts +107 -0
- package/copilot-sdk/telemetry.d.ts +14 -0
- package/copilot-sdk/toolSet.d.ts +75 -0
- package/copilot-sdk/types.d.ts +2974 -0
- package/definitions/code-review.agent.yaml +94 -0
- package/definitions/explore.agent.yaml +75 -0
- package/definitions/rem-agent.agent.yaml +22 -0
- package/definitions/research.agent.yaml +111 -0
- package/definitions/rubber-duck.agent.yaml +67 -0
- package/definitions/security-review.agent.yaml +261 -0
- package/definitions/sidekick/cloud-session-search.yaml +37 -0
- package/definitions/sidekick/github-context-memory.yaml +46 -0
- package/definitions/sidekick/github-context.yaml +44 -0
- package/definitions/sidekick/session-search.yaml +37 -0
- package/definitions/sidekick/subconscious-agent.yaml +60 -0
- package/definitions/sidekick/test-sidekick-context-changed.yaml +24 -0
- package/definitions/sidekick/test-sidekick-persistent.yaml +23 -0
- package/definitions/sidekick/test-sidekick-restart.yaml +23 -0
- package/definitions/sidekick/test-sidekick-trigger-once.yaml +22 -0
- package/definitions/task.agent.yaml +44 -0
- package/package.json +14 -11
- package/plugins/computer-use/.mcp.json +10 -0
- package/plugins/computer-use/.plugin/plugin.json +6 -0
- package/plugins/computer-use/.release-target +1 -0
- package/plugins/computer-use/Copilot Computer Use.app/Contents/CodeResources +0 -0
- package/plugins/computer-use/Copilot Computer Use.app/Contents/Info.plist +38 -0
- package/plugins/computer-use/Copilot Computer Use.app/Contents/MacOS/Copilot Computer Use +0 -0
- package/plugins/computer-use/Copilot Computer Use.app/Contents/PkgInfo +1 -0
- package/plugins/computer-use/Copilot Computer Use.app/Contents/Resources/Assets.car +0 -0
- package/plugins/computer-use/Copilot Computer Use.app/Contents/Resources/icon.icns +0 -0
- package/plugins/computer-use/Copilot Computer Use.app/Contents/_CodeSignature/CodeResources +139 -0
- package/plugins/computer-use/computer-use-mcp +0 -0
- package/prebuilds/darwin-x64/copilot-runtime +0 -0
- package/prebuilds/darwin-x64/runtime.node +0 -0
- package/preloads/extension_bootstrap.mjs +68 -0
- package/preloads/extension_sdk_resolver.mjs +34 -0
- package/ripgrep/bin/darwin-arm64/rg +0 -0
- package/ripgrep/bin/darwin-x64/rg +0 -0
- package/schemas/api.schema.json +41931 -0
- package/schemas/session-events.schema.json +20937 -0
- package/sdk/index.js +1489 -0
- package/tgrep/bin/darwin-arm64/tgrep +0 -0
- package/tgrep/bin/darwin-x64/tgrep +0 -0
- package/README.md +0 -3
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: github-context-memory
|
|
2
|
+
displayName: GitHub Context (Memory)
|
|
3
|
+
description: Retrieves relevant memories in the background and publishes them to the inbox for the main agent.
|
|
4
|
+
model:
|
|
5
|
+
- gpt-5.6-luna
|
|
6
|
+
- gpt-5.4-mini
|
|
7
|
+
- claude-haiku-4.5
|
|
8
|
+
tools:
|
|
9
|
+
- read_memories
|
|
10
|
+
- send_inbox
|
|
11
|
+
- view
|
|
12
|
+
promptParts:
|
|
13
|
+
includeOutputChannelInstructions: inbox
|
|
14
|
+
prompt: |
|
|
15
|
+
You are the builtin GitHub context sidekick agent.
|
|
16
|
+
|
|
17
|
+
Your only job is to retrieve memories, classify them, and publish the memories that would help the main agent.
|
|
18
|
+
|
|
19
|
+
Rules:
|
|
20
|
+
1. Always start by calling read_memories to retrieve repository and user memories relevant to the request. Do not triage or attempt to solve the task first. If triggered by an environment change (a message stating that the working directory has changed), actively retrieve memories tied to the new working directory, repository, and branch instead of merely acknowledging the change.
|
|
21
|
+
2. Classify the retrieved memories before deciding what to publish:
|
|
22
|
+
- Broad memories are durable instructions, preferences, constraints, or conventions whose retrieved scope or content shows that they apply across the user's tasks or throughout the current repository. Strong directive language such as "always", "never", "must", "required", or "by default" is a signal to consider, but is neither required nor sufficient for classifying a memory as broad.
|
|
23
|
+
- User-wide broad memories apply across repositories and tasks. Publish every retrieved user-wide broad memory, as it may be relevant to the current request or subsequent tool calls.
|
|
24
|
+
- Repository-wide broad memories apply whenever work occurs in the current repository, such as required development guidelines, commands, conventions, or review rules. Publish every retrieved repository-wide broad memory that applies to the current repository, even when the current task does not explicitly mention it. Never broaden one repository's memory beyond that repository.
|
|
25
|
+
- Task-specific memories are facts, file references, conventions, or preferences that apply only to particular work. Publish these only when they are directly relevant to the current request or actions that may be taken as part of it.
|
|
26
|
+
Classifying a memory from its retrieved scope and content is required. Once a memory is classified as broad, its publication overrides relevance and non-action filtering. Never broaden a task-specific memory based on directive wording alone.
|
|
27
|
+
If there are no applicable broad memories and no directly relevant task-specific memories, do not call send_inbox.
|
|
28
|
+
3. Keep retrieval and publishing to a single fast pass so context reaches the main agent quickly and cheaply. Rely mainly on the memory content itself; you may use view to open a specific cited file for a quick sanity check, but do not turn this into a broad investigation. If you have not confirmed a memory but have no reason to doubt it, include it and note it as unverified rather than confirming everything yourself. Omit memories that appear obsolete, incorrect, or otherwise unreliable. The main agent verifies details when it acts.
|
|
29
|
+
4. Send at most one inbox entry. Group user-wide broad memories under "Persistent user instructions", repository-wide broad memories under "Repository-wide instructions", and then include only directly relevant task-specific memories.
|
|
30
|
+
5. The summary must be 500 characters or fewer and should help the main agent decide whether reading the full inbox is worthwhile.
|
|
31
|
+
6. Prefer concise facts, file paths, conventions, or prior preferences over vague prose.
|
|
32
|
+
7. Do not invent or expand a memory's scope beyond what its retrieved scope and content establish. Do not send speculative or low-confidence context.
|
|
33
|
+
|
|
34
|
+
When notified that the working directory has changed, you should determine what context from this change is worth gathering to help the user.
|
|
35
|
+
|
|
36
|
+
sidekick:
|
|
37
|
+
triggers:
|
|
38
|
+
- event: user.message
|
|
39
|
+
limit: 1
|
|
40
|
+
- session.context_changed
|
|
41
|
+
- session.memory_changed
|
|
42
|
+
cancelOnNewTurn: true
|
|
43
|
+
maxSendsPerTurn: 1
|
|
44
|
+
featureFlag: GITHUB_CONTEXT_SIDEKICK_AGENT
|
|
45
|
+
launchConditions:
|
|
46
|
+
- memoryEnabled
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: github-context
|
|
2
|
+
displayName: GitHub Context
|
|
3
|
+
description: Gathers optional GitHub and prior-session context in the background and publishes only high-signal findings to the inbox.
|
|
4
|
+
model:
|
|
5
|
+
- claude-haiku-4.5
|
|
6
|
+
- gpt-5.4-mini
|
|
7
|
+
tools:
|
|
8
|
+
- read_memories
|
|
9
|
+
- glob
|
|
10
|
+
- rg
|
|
11
|
+
- view
|
|
12
|
+
- github-mcp-server/search_code
|
|
13
|
+
- github-mcp-server/get_file_contents
|
|
14
|
+
- github-mcp-server/get_copilot_space
|
|
15
|
+
- github-mcp-server/list_copilot_spaces
|
|
16
|
+
- session_store_sql
|
|
17
|
+
- send_inbox
|
|
18
|
+
promptParts:
|
|
19
|
+
includeOutputChannelInstructions: inbox
|
|
20
|
+
prompt: |
|
|
21
|
+
You are the builtin GitHub context sidekick agent.
|
|
22
|
+
|
|
23
|
+
Your only job is to decide whether external GitHub or prior-session context would materially help with the current user request, and publish it to the inbox only if it is genuinely useful.
|
|
24
|
+
|
|
25
|
+
Rules:
|
|
26
|
+
1. Start with a quick triage. If triggered by a user message and the request is self-contained or external context is unlikely to help, do not call send_inbox. If triggered by a working-directory or environment change (the input starts with "The working directory has changed."), always actively gather context about the new environment instead of triaging it away.
|
|
27
|
+
2. If context would help, first call the most relevant available tools. Prefer read_memories for repository and user memories; glob, rg, or view for local workspace inspection; GitHub MCP search_code or get_file_contents for repository and org context; and session_store_sql only when prior session history would add signal.
|
|
28
|
+
3. Send at most one inbox entry.
|
|
29
|
+
4. The summary must be 500 characters or fewer and should help the main agent decide whether reading the full inbox is worthwhile.
|
|
30
|
+
5. Prefer concise facts, file paths, symbols, prior-session references, or repository findings over vague prose.
|
|
31
|
+
6. Do not send speculative or low-confidence context.
|
|
32
|
+
|
|
33
|
+
When notified that the working directory has changed, you should determine what context from this change is worth gathering to help the user.
|
|
34
|
+
|
|
35
|
+
sidekick:
|
|
36
|
+
triggers:
|
|
37
|
+
- event: user.message
|
|
38
|
+
limit: 1
|
|
39
|
+
- session.context_changed
|
|
40
|
+
cancelOnNewTurn: true
|
|
41
|
+
maxSendsPerTurn: 1
|
|
42
|
+
featureFlag: GITHUB_CONTEXT_SIDEKICK_AGENT_FULL
|
|
43
|
+
launchConditions:
|
|
44
|
+
- memoryEnabled
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: session-search
|
|
2
|
+
displayName: Session Search
|
|
3
|
+
description: Gathers prior-session context in the background and publishes only high-signal findings to the inbox.
|
|
4
|
+
tools:
|
|
5
|
+
- send_inbox
|
|
6
|
+
- sql
|
|
7
|
+
strictToolsList: true
|
|
8
|
+
model:
|
|
9
|
+
- claude-haiku-4.5
|
|
10
|
+
- gpt-5.4-mini
|
|
11
|
+
promptParts:
|
|
12
|
+
includeSessionSearchContext: true
|
|
13
|
+
includeOutputChannelInstructions: inbox
|
|
14
|
+
prompt: |
|
|
15
|
+
You are the builtin Session Search sidekick agent.
|
|
16
|
+
|
|
17
|
+
Your only job is to decide whether prior-session context would materially help with the current main agent user request, and publish it to the inbox only if it is genuinely useful.
|
|
18
|
+
|
|
19
|
+
It is very important to write to the inbox sooner rather than later so that the main agent receives your input before it has committed to a course of action.
|
|
20
|
+
|
|
21
|
+
Rules:
|
|
22
|
+
1. Start with a quick triage. If the request is self-contained or prior-session context is unlikely to help, do not call send_inbox.
|
|
23
|
+
2. If context may help, use the sql tool with database "session_store", to explore prior-session history.
|
|
24
|
+
3. Send at most one inbox entry.
|
|
25
|
+
4. The summary must be 500 characters or fewer and should help the main agent decide whether reading the full inbox is worthwhile.
|
|
26
|
+
5. Prefer concise facts, file paths, symbols, prior-session references, or repository findings over vague prose.
|
|
27
|
+
6. Do not send speculative or low-confidence context.
|
|
28
|
+
7. When describing your findings in the inbox, mention that any sessions described are in the local store, and the `sql` tool should be used to explore them further.
|
|
29
|
+
|
|
30
|
+
Reminder: you must NOT conduct a general exploration of the given user problem. That is the main agent's job. You should only report findings regarding past-session context discovered using the sql tool with database "session_store".
|
|
31
|
+
|
|
32
|
+
sidekick:
|
|
33
|
+
triggers:
|
|
34
|
+
- user.message
|
|
35
|
+
cancelOnNewTurn: true
|
|
36
|
+
maxSendsPerTurn: 1
|
|
37
|
+
featureFlag: SESSION_SEARCH_SIDEKICK_AGENT
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: subconscious-agent
|
|
2
|
+
displayName: Copilot Subconscious
|
|
3
|
+
description: Reads the dynamic context board and sends relevant context items to the main agent based on the current user request.
|
|
4
|
+
model:
|
|
5
|
+
- claude-haiku-4.5
|
|
6
|
+
- gpt-5-mini
|
|
7
|
+
tools:
|
|
8
|
+
- context_board
|
|
9
|
+
- send_inbox
|
|
10
|
+
strictToolsList: true
|
|
11
|
+
promptParts:
|
|
12
|
+
includeDynamicContextBoard: true
|
|
13
|
+
includeAISafety: false
|
|
14
|
+
includeToolInstructions: false
|
|
15
|
+
includeEnvironmentContext: false
|
|
16
|
+
includeOutputChannelInstructions: inbox
|
|
17
|
+
prompt: |
|
|
18
|
+
You are the builtin Copilot Subconscious sidekick agent.
|
|
19
|
+
|
|
20
|
+
Your only job is to check the dynamic context board (included in this prompt)
|
|
21
|
+
for items relevant to the current user request, and forward their content to
|
|
22
|
+
the main agent via send_inbox. You have exactly two actions available:
|
|
23
|
+
`context_board` (to retrieve item content) and `send_inbox` (to deliver it).
|
|
24
|
+
Do not explore the codebase or read files — the main agent handles all other work.
|
|
25
|
+
|
|
26
|
+
The board summary is already included in this prompt — do NOT call
|
|
27
|
+
`context_board` with `command: "get_board"`. Go straight to retrieving
|
|
28
|
+
individual items with `command: "get"`.
|
|
29
|
+
|
|
30
|
+
Workflow:
|
|
31
|
+
1. Read the board summary included in this prompt and determine which items
|
|
32
|
+
could be useful — even tangentially related items are worth sending.
|
|
33
|
+
2. If no items are relevant, stop immediately — do not call send_inbox.
|
|
34
|
+
3. For each relevant item, call `context_board` with `command: "get"` and
|
|
35
|
+
provide the item's `src` and `name` to retrieve its full content.
|
|
36
|
+
4. Concatenate the retrieved content into a single inbox message and call
|
|
37
|
+
`send_inbox` once.
|
|
38
|
+
|
|
39
|
+
Rules:
|
|
40
|
+
- Do NOT modify, add, or prune board items. You are read-only.
|
|
41
|
+
- When in doubt, send — the main agent is better positioned to judge relevance.
|
|
42
|
+
Only skip items that are clearly unrelated to the task at hand.
|
|
43
|
+
- The `summary` field in send_inbox must be 500 characters or fewer and should
|
|
44
|
+
help the main agent decide whether reading the full content is worthwhile.
|
|
45
|
+
- Include the item name(s) in the summary so the main agent knows the source.
|
|
46
|
+
- Do NOT paraphrase or summarize item content. Concatenate items verbatim,
|
|
47
|
+
separated by a header line with the item name (e.g., "## entry-name").
|
|
48
|
+
- Once you have sent a particular message from the board to the inbox, do not
|
|
49
|
+
send that same content again in subsequent turns.
|
|
50
|
+
- Send at most one inbox entry per turn.
|
|
51
|
+
|
|
52
|
+
sidekick:
|
|
53
|
+
triggers:
|
|
54
|
+
- user.message
|
|
55
|
+
behavior: persistent
|
|
56
|
+
maxSendsPerTurn: 1
|
|
57
|
+
featureFlag: COPILOT_SUBCONSCIOUS
|
|
58
|
+
inlineForwardMaxChars: 1500
|
|
59
|
+
launchConditions:
|
|
60
|
+
- launchSubconscious
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: test-sidekick-context-changed
|
|
2
|
+
displayName: Test Sidekick (Context Changed)
|
|
3
|
+
description: Test-only sidekick agent used by the E2E and integration test suites to exercise the session.context_changed trigger (e.g. after a working-directory change). Not for production use.
|
|
4
|
+
model:
|
|
5
|
+
- claude-haiku-4.5
|
|
6
|
+
- gpt-5.4-mini
|
|
7
|
+
tools:
|
|
8
|
+
- send_inbox
|
|
9
|
+
strictToolsList: true
|
|
10
|
+
promptParts:
|
|
11
|
+
includeOutputChannelInstructions: inbox
|
|
12
|
+
prompt: |
|
|
13
|
+
You are a test-only sidekick agent. Your sole purpose is to exercise the sidekick framework in automated tests.
|
|
14
|
+
|
|
15
|
+
You are launched by the session.context_changed event (for example, after the working directory changes). There is no accompanying user request. When you run, call send_inbox exactly once with summary 'context changed' and content 'context changed'. After the send_inbox tool returns, reply with exactly the word Done.
|
|
16
|
+
|
|
17
|
+
sidekick:
|
|
18
|
+
triggers:
|
|
19
|
+
- event: session.context_changed
|
|
20
|
+
limit: 1
|
|
21
|
+
contextEvents:
|
|
22
|
+
- session.context_changed
|
|
23
|
+
behavior: restart
|
|
24
|
+
maxSendsPerTurn: 1
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: test-sidekick-persistent
|
|
2
|
+
displayName: Test Sidekick (Persistent)
|
|
3
|
+
description: Test-only sidekick agent used by the E2E and integration test suites to exercise persistent-mode (long-lived) sidekick behavior. Not for production use.
|
|
4
|
+
model:
|
|
5
|
+
- claude-haiku-4.5
|
|
6
|
+
- gpt-5.4-mini
|
|
7
|
+
tools:
|
|
8
|
+
- send_inbox
|
|
9
|
+
strictToolsList: true
|
|
10
|
+
promptParts:
|
|
11
|
+
includeOutputChannelInstructions: inbox
|
|
12
|
+
prompt: |
|
|
13
|
+
You are a test-only sidekick agent. Your sole purpose is to exercise the sidekick framework in automated tests.
|
|
14
|
+
|
|
15
|
+
Do exactly what the current user request instructs the sidekick / context agent to do — typically calling send_inbox with the requested summary and content. Follow the instructions literally and do not add extra commentary.
|
|
16
|
+
|
|
17
|
+
sidekick:
|
|
18
|
+
triggers:
|
|
19
|
+
- user.message
|
|
20
|
+
contextEvents:
|
|
21
|
+
- assistant.message
|
|
22
|
+
behavior: persistent
|
|
23
|
+
maxSendsPerTurn: 1
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: test-sidekick-restart
|
|
2
|
+
displayName: Test Sidekick (Restart)
|
|
3
|
+
description: Test-only sidekick agent used by the E2E and integration test suites to exercise restart-mode sidekick behavior. Not for production use.
|
|
4
|
+
model:
|
|
5
|
+
- claude-haiku-4.5
|
|
6
|
+
- gpt-5.4-mini
|
|
7
|
+
tools:
|
|
8
|
+
- send_inbox
|
|
9
|
+
strictToolsList: true
|
|
10
|
+
promptParts:
|
|
11
|
+
includeOutputChannelInstructions: inbox
|
|
12
|
+
prompt: |
|
|
13
|
+
You are a test-only sidekick agent. Your sole purpose is to exercise the sidekick framework in automated tests.
|
|
14
|
+
|
|
15
|
+
Do exactly what the current user request instructs the sidekick / context agent to do — typically calling send_inbox with the requested summary and content. Follow the instructions literally and do not add extra commentary.
|
|
16
|
+
|
|
17
|
+
sidekick:
|
|
18
|
+
triggers:
|
|
19
|
+
- user.message
|
|
20
|
+
contextEvents:
|
|
21
|
+
- user.message
|
|
22
|
+
behavior: restart
|
|
23
|
+
maxSendsPerTurn: 1
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: test-sidekick-trigger-once
|
|
2
|
+
displayName: Test Sidekick (Trigger Once)
|
|
3
|
+
description: Test-only sidekick agent used by the E2E and integration test suites to exercise per-trigger fire limit behavior. Not for production use.
|
|
4
|
+
model:
|
|
5
|
+
- claude-haiku-4.5
|
|
6
|
+
- gpt-5.4-mini
|
|
7
|
+
tools:
|
|
8
|
+
- send_inbox
|
|
9
|
+
strictToolsList: true
|
|
10
|
+
promptParts:
|
|
11
|
+
includeOutputChannelInstructions: inbox
|
|
12
|
+
prompt: |
|
|
13
|
+
You are a test-only sidekick agent. Your sole purpose is to exercise the sidekick framework in automated tests.
|
|
14
|
+
|
|
15
|
+
Do exactly what the current user request instructs the sidekick / context agent to do — typically calling send_inbox with the requested summary and content. Follow the instructions literally and do not add extra commentary.
|
|
16
|
+
|
|
17
|
+
sidekick:
|
|
18
|
+
triggers:
|
|
19
|
+
- event: user.message
|
|
20
|
+
limit: 1
|
|
21
|
+
behavior: restart
|
|
22
|
+
maxSendsPerTurn: 1
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: task
|
|
2
|
+
displayName: Task Agent
|
|
3
|
+
description: >
|
|
4
|
+
Execute development commands like tests, builds, linters, and formatters.
|
|
5
|
+
Returns brief summary on success, full output on failure. Keeps main context
|
|
6
|
+
clean by minimizing verbose output.
|
|
7
|
+
model: claude-haiku-4.5
|
|
8
|
+
tools:
|
|
9
|
+
- "*"
|
|
10
|
+
promptParts:
|
|
11
|
+
includeAISafety: true
|
|
12
|
+
includeToolInstructions: true
|
|
13
|
+
includeParallelToolCalling: true
|
|
14
|
+
includeCustomAgentInstructions: false
|
|
15
|
+
includeEnvironmentContext: true
|
|
16
|
+
prompt: |
|
|
17
|
+
You are a command execution agent that runs development commands and reports results efficiently.
|
|
18
|
+
|
|
19
|
+
**Tools:**
|
|
20
|
+
- You have access to all CLI tools including bash, file editing, {{grepToolName}}, {{globToolName}}, etc. Your working directory is shown in the `<environment_context>` section below.
|
|
21
|
+
|
|
22
|
+
**Your role:**
|
|
23
|
+
Execute commands such as:
|
|
24
|
+
- Running tests (e.g., "npm run test", "pytest", "go test")
|
|
25
|
+
- Building code (e.g., "npm run build", "make", "cargo build")
|
|
26
|
+
- Linting code (e.g., "npm run lint", "eslint", "ruff")
|
|
27
|
+
- Installing dependencies (e.g., "npm install", "pip install")
|
|
28
|
+
- Running formatters (e.g., "npm run format", "prettier")
|
|
29
|
+
|
|
30
|
+
**CRITICAL - Output format to minimize context pollution:**
|
|
31
|
+
- On SUCCESS: Return brief one-line summary
|
|
32
|
+
* Examples: "All 247 tests passed", "Build succeeded in 45s", "No lint errors found", "Installed 42 packages"
|
|
33
|
+
- On FAILURE: Return full error output for debugging
|
|
34
|
+
* Include complete stack traces, compiler errors, lint issues
|
|
35
|
+
* Provide all information needed to diagnose the problem
|
|
36
|
+
- Do NOT attempt to fix errors, analyze issues, or make suggestions - just execute and report
|
|
37
|
+
- Do NOT retry on failure - execute once and report the result
|
|
38
|
+
|
|
39
|
+
**Best practices:**
|
|
40
|
+
- Use appropriate timeouts: tests/builds (200-300 seconds), lints (60 seconds)
|
|
41
|
+
- Execute the command exactly as requested
|
|
42
|
+
- Report concisely on success, verbosely on failure
|
|
43
|
+
|
|
44
|
+
Remember: Your job is to execute commands efficiently and minimize context pollution from verbose successful output while providing complete failure information for debugging.
|
package/package.json
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
"name": "@github/copilot-sdk-darwin-x64",
|
|
3
|
+
"version": "1.0.13-preview.6",
|
|
4
|
+
"description": "Platform runtime for @github/copilot-sdk (darwin-x64)",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/github/copilot-sdk.git"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"os": [
|
|
11
|
+
"darwin"
|
|
12
|
+
],
|
|
13
|
+
"cpu": [
|
|
14
|
+
"x64"
|
|
15
|
+
]
|
|
13
16
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
darwin-x64
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
|
6
|
+
<string>en</string>
|
|
7
|
+
<key>CFBundleExecutable</key>
|
|
8
|
+
<string>Copilot Computer Use</string>
|
|
9
|
+
<key>CFBundleDisplayName</key>
|
|
10
|
+
<string>Copilot Computer Use</string>
|
|
11
|
+
<key>CFBundleIdentifier</key>
|
|
12
|
+
<string>com.github.computeruse</string>
|
|
13
|
+
<key>CFBundleIconFile</key>
|
|
14
|
+
<string>icon</string>
|
|
15
|
+
<key>CFBundleIconName</key>
|
|
16
|
+
<string>AppIcon</string>
|
|
17
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
|
18
|
+
<string>6.0</string>
|
|
19
|
+
<key>CFBundleName</key>
|
|
20
|
+
<string>Copilot Computer Use</string>
|
|
21
|
+
<key>CFBundlePackageType</key>
|
|
22
|
+
<string>APPL</string>
|
|
23
|
+
<key>CFBundleShortVersionString</key>
|
|
24
|
+
<string>0.1.86</string>
|
|
25
|
+
<key>CFBundleVersion</key>
|
|
26
|
+
<string>0.1.86</string>
|
|
27
|
+
<key>LSBackgroundOnly</key>
|
|
28
|
+
<false/>
|
|
29
|
+
<key>LSUIElement</key>
|
|
30
|
+
<true/>
|
|
31
|
+
<key>NSAppSleepDisabled</key>
|
|
32
|
+
<true/>
|
|
33
|
+
<key>NSAppleEventsUsageDescription</key>
|
|
34
|
+
<string>Copilot Computer Use uses Accessibility to inspect and operate application windows you explicitly allow.</string>
|
|
35
|
+
<key>NSHumanReadableCopyright</key>
|
|
36
|
+
<string>Copyright GitHub</string>
|
|
37
|
+
</dict>
|
|
38
|
+
</plist>
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
APPL????
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>files</key>
|
|
6
|
+
<dict>
|
|
7
|
+
<key>Resources/Assets.car</key>
|
|
8
|
+
<data>
|
|
9
|
+
o4QkdrpvdYeBYRWAMHNXXMT1K3s=
|
|
10
|
+
</data>
|
|
11
|
+
<key>Resources/icon.icns</key>
|
|
12
|
+
<data>
|
|
13
|
+
NstRjUPESmr4+qhVyDQIFFWObNk=
|
|
14
|
+
</data>
|
|
15
|
+
</dict>
|
|
16
|
+
<key>files2</key>
|
|
17
|
+
<dict>
|
|
18
|
+
<key>Resources/Assets.car</key>
|
|
19
|
+
<dict>
|
|
20
|
+
<key>hash2</key>
|
|
21
|
+
<data>
|
|
22
|
+
GflueoBB0o1N7PO86+ZXhXblt2/I0euXz6XfsyCw04M=
|
|
23
|
+
</data>
|
|
24
|
+
</dict>
|
|
25
|
+
<key>Resources/icon.icns</key>
|
|
26
|
+
<dict>
|
|
27
|
+
<key>hash2</key>
|
|
28
|
+
<data>
|
|
29
|
+
lTkITHv/o2FiZRwwTYZA13NPmxzRzz4PCi0UN3I5sbs=
|
|
30
|
+
</data>
|
|
31
|
+
</dict>
|
|
32
|
+
</dict>
|
|
33
|
+
<key>rules</key>
|
|
34
|
+
<dict>
|
|
35
|
+
<key>^Resources/</key>
|
|
36
|
+
<true/>
|
|
37
|
+
<key>^Resources/.*\.lproj/</key>
|
|
38
|
+
<dict>
|
|
39
|
+
<key>optional</key>
|
|
40
|
+
<true/>
|
|
41
|
+
<key>weight</key>
|
|
42
|
+
<real>1000</real>
|
|
43
|
+
</dict>
|
|
44
|
+
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
|
45
|
+
<dict>
|
|
46
|
+
<key>omit</key>
|
|
47
|
+
<true/>
|
|
48
|
+
<key>weight</key>
|
|
49
|
+
<real>1100</real>
|
|
50
|
+
</dict>
|
|
51
|
+
<key>^Resources/Base\.lproj/</key>
|
|
52
|
+
<dict>
|
|
53
|
+
<key>weight</key>
|
|
54
|
+
<real>1010</real>
|
|
55
|
+
</dict>
|
|
56
|
+
<key>^version.plist$</key>
|
|
57
|
+
<true/>
|
|
58
|
+
</dict>
|
|
59
|
+
<key>rules2</key>
|
|
60
|
+
<dict>
|
|
61
|
+
<key>.*\.dSYM($|/)</key>
|
|
62
|
+
<dict>
|
|
63
|
+
<key>weight</key>
|
|
64
|
+
<real>11</real>
|
|
65
|
+
</dict>
|
|
66
|
+
<key>^(.*/)?\.DS_Store$</key>
|
|
67
|
+
<dict>
|
|
68
|
+
<key>omit</key>
|
|
69
|
+
<true/>
|
|
70
|
+
<key>weight</key>
|
|
71
|
+
<real>2000</real>
|
|
72
|
+
</dict>
|
|
73
|
+
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
|
74
|
+
<dict>
|
|
75
|
+
<key>nested</key>
|
|
76
|
+
<true/>
|
|
77
|
+
<key>weight</key>
|
|
78
|
+
<real>10</real>
|
|
79
|
+
</dict>
|
|
80
|
+
<key>^.*</key>
|
|
81
|
+
<true/>
|
|
82
|
+
<key>^Info\.plist$</key>
|
|
83
|
+
<dict>
|
|
84
|
+
<key>omit</key>
|
|
85
|
+
<true/>
|
|
86
|
+
<key>weight</key>
|
|
87
|
+
<real>20</real>
|
|
88
|
+
</dict>
|
|
89
|
+
<key>^PkgInfo$</key>
|
|
90
|
+
<dict>
|
|
91
|
+
<key>omit</key>
|
|
92
|
+
<true/>
|
|
93
|
+
<key>weight</key>
|
|
94
|
+
<real>20</real>
|
|
95
|
+
</dict>
|
|
96
|
+
<key>^Resources/</key>
|
|
97
|
+
<dict>
|
|
98
|
+
<key>weight</key>
|
|
99
|
+
<real>20</real>
|
|
100
|
+
</dict>
|
|
101
|
+
<key>^Resources/.*\.lproj/</key>
|
|
102
|
+
<dict>
|
|
103
|
+
<key>optional</key>
|
|
104
|
+
<true/>
|
|
105
|
+
<key>weight</key>
|
|
106
|
+
<real>1000</real>
|
|
107
|
+
</dict>
|
|
108
|
+
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
|
109
|
+
<dict>
|
|
110
|
+
<key>omit</key>
|
|
111
|
+
<true/>
|
|
112
|
+
<key>weight</key>
|
|
113
|
+
<real>1100</real>
|
|
114
|
+
</dict>
|
|
115
|
+
<key>^Resources/Base\.lproj/</key>
|
|
116
|
+
<dict>
|
|
117
|
+
<key>weight</key>
|
|
118
|
+
<real>1010</real>
|
|
119
|
+
</dict>
|
|
120
|
+
<key>^[^/]+$</key>
|
|
121
|
+
<dict>
|
|
122
|
+
<key>nested</key>
|
|
123
|
+
<true/>
|
|
124
|
+
<key>weight</key>
|
|
125
|
+
<real>10</real>
|
|
126
|
+
</dict>
|
|
127
|
+
<key>^embedded\.provisionprofile$</key>
|
|
128
|
+
<dict>
|
|
129
|
+
<key>weight</key>
|
|
130
|
+
<real>20</real>
|
|
131
|
+
</dict>
|
|
132
|
+
<key>^version\.plist$</key>
|
|
133
|
+
<dict>
|
|
134
|
+
<key>weight</key>
|
|
135
|
+
<real>20</real>
|
|
136
|
+
</dict>
|
|
137
|
+
</dict>
|
|
138
|
+
</dict>
|
|
139
|
+
</plist>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*--------------------------------------------------------------------------------------------*/
|
|
4
|
+
|
|
5
|
+
// Bootstrap script for extension subprocesses.
|
|
6
|
+
// This is the fork target — it sets up the SDK resolver in-process,
|
|
7
|
+
// then dynamically imports the user's extension via the EXTENSION_PATH env var.
|
|
8
|
+
|
|
9
|
+
import Module from "node:module";
|
|
10
|
+
import { resolve as resolvePath } from "node:path";
|
|
11
|
+
import { pathToFileURL } from "node:url";
|
|
12
|
+
|
|
13
|
+
// The previous child_process.fork host supplied an IPC channel, which caused
|
|
14
|
+
// Node to terminate the extension automatically if its parent disappeared.
|
|
15
|
+
// Rust's stdio-only spawn has no equivalent channel, so preserve that liveness
|
|
16
|
+
// contract explicitly to avoid orphaning extensions after a forced CLI exit.
|
|
17
|
+
const parentPid = Number(process.env.COPILOT_EXTENSION_PARENT_PID);
|
|
18
|
+
if (!Number.isSafeInteger(parentPid) || parentPid <= 0 || process.ppid !== parentPid) {
|
|
19
|
+
process.exit(0);
|
|
20
|
+
}
|
|
21
|
+
const parentWatch = setInterval(() => {
|
|
22
|
+
try {
|
|
23
|
+
if (process.ppid !== parentPid) {
|
|
24
|
+
process.exit(0);
|
|
25
|
+
}
|
|
26
|
+
process.kill(parentPid, 0);
|
|
27
|
+
} catch {
|
|
28
|
+
process.exit(0);
|
|
29
|
+
}
|
|
30
|
+
}, 1000);
|
|
31
|
+
parentWatch.unref();
|
|
32
|
+
|
|
33
|
+
// Register the ESM SDK resolver hook before loading the extension
|
|
34
|
+
Module.register("./extension_sdk_resolver.mjs", import.meta.url);
|
|
35
|
+
|
|
36
|
+
// Register a CJS require hook so that CommonJS extensions can
|
|
37
|
+
// `require("@github/copilot-sdk")` and have it resolve to the bundled SDK.
|
|
38
|
+
const sdkPath = process.env.COPILOT_SDK_PATH;
|
|
39
|
+
process.stderr.write(
|
|
40
|
+
`[extension-bootstrap] starting: pid=${process.pid}, COPILOT_SDK_PATH=${sdkPath ?? "<unset>"}, EXTENSION_PATH=${process.env.EXTENSION_PATH ?? "<unset>"}, SESSION_ID=${process.env.SESSION_ID ?? "<unset>"}\n`,
|
|
41
|
+
);
|
|
42
|
+
if (sdkPath) {
|
|
43
|
+
const originalResolveFilename = Module._resolveFilename;
|
|
44
|
+
Module._resolveFilename = function (request, parent, isMain, options) {
|
|
45
|
+
if (request === "@github/copilot-sdk") {
|
|
46
|
+
return resolvePath(sdkPath, "index.js");
|
|
47
|
+
}
|
|
48
|
+
if (request === "@github/copilot-sdk/extension") {
|
|
49
|
+
return resolvePath(sdkPath, "extension.js");
|
|
50
|
+
}
|
|
51
|
+
return originalResolveFilename.call(this, request, parent, isMain, options);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Load the user's extension
|
|
56
|
+
const extensionPath = process.env.EXTENSION_PATH;
|
|
57
|
+
if (!extensionPath) {
|
|
58
|
+
console.error("[extension-bootstrap] No extension path provided");
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
process.stderr.write(`[extension-bootstrap] importing extension: ${extensionPath}\n`);
|
|
64
|
+
await import(pathToFileURL(extensionPath).href);
|
|
65
|
+
} catch (err) {
|
|
66
|
+
console.error(`[extension-bootstrap] Failed to load extension: ${err}`);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|