@qodeca/xezar 0.13.0 → 0.14.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 +72 -39
- package/dist/agent-config/account-identity.d.ts +2 -8
- package/dist/agent-config/account-identity.js +54 -10
- package/dist/agent-config/account-identity.js.map +1 -1
- package/dist/agent-config/catalog.d.ts +49 -7
- package/dist/agent-config/catalog.js +107 -0
- package/dist/agent-config/catalog.js.map +1 -1
- package/dist/agent-config/model-settings/pi.d.ts +12 -6
- package/dist/agent-config/model-settings/pi.js +12 -6
- package/dist/agent-config/model-settings/pi.js.map +1 -1
- package/dist/agent-config/seed.js +10 -0
- package/dist/agent-config/seed.js.map +1 -1
- package/dist/contract/github.d.ts +15 -0
- package/dist/contract/index.d.ts +9 -0
- package/dist/contract/index.js +1527 -895
- package/dist/contract/mcp-api-reference.d.ts +174 -0
- package/dist/contract/mcp-audit.d.ts +103 -0
- package/dist/contract/mcp-discovery.d.ts +257 -0
- package/dist/contract/mcp-event-catalog.d.ts +121 -0
- package/dist/contract/mcp-event-catalog.test.d.ts +1 -0
- package/dist/contract/mcp-idempotency.d.ts +200 -0
- package/dist/contract/mcp-journal.d.ts +268 -0
- package/dist/contract/mcp-leader.d.ts +88 -0
- package/dist/contract/mcp-ownership.d.ts +78 -0
- package/dist/contract/mcp-versioning.d.ts +139 -0
- package/dist/contract/runs.d.ts +81 -0
- package/dist/core/agent-profiles.d.ts +15 -4
- package/dist/core/agent-profiles.js +22 -8
- package/dist/core/agent-profiles.js.map +1 -1
- package/dist/core/opencode-server-runner.js +71 -11
- package/dist/core/opencode-server-runner.js.map +1 -1
- package/dist/core/secret-redaction.d.ts +7 -1
- package/dist/core/secret-redaction.js +44 -10
- package/dist/core/secret-redaction.js.map +1 -1
- package/dist/index.js +138 -27
- package/dist/index.js.map +1 -1
- package/dist/machine-identity.d.ts +66 -0
- package/dist/machine-identity.js +96 -0
- package/dist/machine-identity.js.map +1 -0
- package/dist/mcp/adapters/claude-code.d.ts +41 -0
- package/dist/mcp/adapters/claude-code.js +40 -0
- package/dist/mcp/adapters/claude-code.js.map +1 -0
- package/dist/mcp/adapters/codex.d.ts +140 -0
- package/dist/mcp/adapters/codex.js +323 -0
- package/dist/mcp/adapters/codex.js.map +1 -0
- package/dist/mcp/adapters/opencode.d.ts +148 -0
- package/dist/mcp/adapters/opencode.js +528 -0
- package/dist/mcp/adapters/opencode.js.map +1 -0
- package/dist/mcp/adapters/pi-link.d.ts +102 -0
- package/dist/mcp/adapters/pi-link.js +235 -0
- package/dist/mcp/adapters/pi-link.js.map +1 -0
- package/dist/mcp/adapters/pi.d.ts +188 -0
- package/dist/mcp/adapters/pi.js +418 -0
- package/dist/mcp/adapters/pi.js.map +1 -0
- package/dist/mcp/api-reference.d.ts +26 -0
- package/dist/mcp/api-reference.js +133 -0
- package/dist/mcp/api-reference.js.map +1 -0
- package/dist/mcp/audit-trail.d.ts +162 -0
- package/dist/mcp/audit-trail.js +306 -0
- package/dist/mcp/audit-trail.js.map +1 -0
- package/dist/mcp/bridge.d.ts +81 -0
- package/dist/mcp/bridge.js +407 -0
- package/dist/mcp/bridge.js.map +1 -0
- package/dist/mcp/connection-file.d.ts +49 -0
- package/dist/mcp/connection-file.js +63 -0
- package/dist/mcp/connection-file.js.map +1 -0
- package/dist/mcp/echo-guard.d.ts +94 -0
- package/dist/mcp/echo-guard.js +160 -0
- package/dist/mcp/echo-guard.js.map +1 -0
- package/dist/mcp/event-catalog.d.ts +120 -0
- package/dist/mcp/event-catalog.js +306 -0
- package/dist/mcp/event-catalog.js.map +1 -0
- package/dist/mcp/event-controller.d.ts +230 -0
- package/dist/mcp/event-controller.js +596 -0
- package/dist/mcp/event-controller.js.map +1 -0
- package/dist/mcp/event-journal.d.ts +57 -0
- package/dist/mcp/event-journal.js +423 -0
- package/dist/mcp/event-journal.js.map +1 -0
- package/dist/mcp/index.d.ts +63 -0
- package/dist/mcp/index.js +386 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/ipc.d.ts +202 -0
- package/dist/mcp/ipc.js +206 -0
- package/dist/mcp/ipc.js.map +1 -0
- package/dist/mcp/leader-delivery.d.ts +119 -0
- package/dist/mcp/leader-delivery.js +450 -0
- package/dist/mcp/leader-delivery.js.map +1 -0
- package/dist/mcp/operation-receipts.d.ts +210 -0
- package/dist/mcp/operation-receipts.js +723 -0
- package/dist/mcp/operation-receipts.js.map +1 -0
- package/dist/mcp/project-catalogs.d.ts +23 -0
- package/dist/mcp/project-catalogs.js +25 -0
- package/dist/mcp/project-catalogs.js.map +1 -0
- package/dist/mcp/project-leaders.d.ts +26 -0
- package/dist/mcp/project-leaders.js +17 -0
- package/dist/mcp/project-leaders.js.map +1 -0
- package/dist/mcp/protocol.d.ts +50 -0
- package/dist/mcp/protocol.js +47 -0
- package/dist/mcp/protocol.js.map +1 -0
- package/dist/mcp/reconnect.d.ts +297 -0
- package/dist/mcp/reconnect.js +465 -0
- package/dist/mcp/reconnect.js.map +1 -0
- package/dist/mcp/resource-ownership.d.ts +228 -0
- package/dist/mcp/resource-ownership.js +390 -0
- package/dist/mcp/resource-ownership.js.map +1 -0
- package/dist/mcp/service-adapter.d.ts +16488 -0
- package/dist/mcp/service-adapter.js +148 -0
- package/dist/mcp/service-adapter.js.map +1 -0
- package/dist/mcp/service.d.ts +83 -0
- package/dist/mcp/service.js +233 -0
- package/dist/mcp/service.js.map +1 -0
- package/dist/mcp/session-binding.d.ts +105 -0
- package/dist/mcp/session-binding.js +163 -0
- package/dist/mcp/session-binding.js.map +1 -0
- package/dist/mcp/stale-write.d.ts +145 -0
- package/dist/mcp/stale-write.js +219 -0
- package/dist/mcp/stale-write.js.map +1 -0
- package/dist/mcp/tool.d.ts +48 -0
- package/dist/mcp/tool.js +24 -0
- package/dist/mcp/tool.js.map +1 -0
- package/dist/mcp/tools/discovery.d.ts +40 -0
- package/dist/mcp/tools/discovery.js +232 -0
- package/dist/mcp/tools/discovery.js.map +1 -0
- package/dist/mcp/tools/execution-control.d.ts +171 -0
- package/dist/mcp/tools/execution-control.js +513 -0
- package/dist/mcp/tools/execution-control.js.map +1 -0
- package/dist/mcp/tools/handoff-git.d.ts +26 -0
- package/dist/mcp/tools/handoff-git.js +544 -0
- package/dist/mcp/tools/handoff-git.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +2 -0
- package/dist/mcp/tools/index.js +23 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/leader-events.d.ts +46 -0
- package/dist/mcp/tools/leader-events.js +126 -0
- package/dist/mcp/tools/leader-events.js.map +1 -0
- package/dist/mcp/tools/local-handoff.d.ts +102 -0
- package/dist/mcp/tools/local-handoff.js +306 -0
- package/dist/mcp/tools/local-handoff.js.map +1 -0
- package/dist/mcp/tools/project-config.d.ts +340 -0
- package/dist/mcp/tools/project-config.js +1075 -0
- package/dist/mcp/tools/project-config.js.map +1 -0
- package/dist/mcp/tools/results-evidence.d.ts +112 -0
- package/dist/mcp/tools/results-evidence.js +1045 -0
- package/dist/mcp/tools/results-evidence.js.map +1 -0
- package/dist/mcp/tools/task-create.d.ts +70 -0
- package/dist/mcp/tools/task-create.js +473 -0
- package/dist/mcp/tools/task-create.js.map +1 -0
- package/dist/mcp/tools/task-reads.d.ts +102 -0
- package/dist/mcp/tools/task-reads.js +689 -0
- package/dist/mcp/tools/task-reads.js.map +1 -0
- package/dist/mcp/tools/work-organisation.d.ts +2 -0
- package/dist/mcp/tools/work-organisation.js +502 -0
- package/dist/mcp/tools/work-organisation.js.map +1 -0
- package/dist/paths.d.ts +17 -7
- package/dist/paths.js +18 -8
- package/dist/paths.js.map +1 -1
- package/dist/runs/project-writer.js +76 -11
- package/dist/runs/project-writer.js.map +1 -1
- package/dist/runs/retention.d.ts +25 -2
- package/dist/runs/retention.js +63 -2
- package/dist/runs/retention.js.map +1 -1
- package/dist/server/forge/github.js +44 -0
- package/dist/server/forge/github.js.map +1 -1
- package/dist/server/forge/types.d.ts +16 -0
- package/dist/server/project-context.d.ts +81 -8
- package/dist/server/project-context.js +143 -35
- package/dist/server/project-context.js.map +1 -1
- package/dist/server/server.d.ts +1050 -53
- package/dist/server/server.js +326 -120
- package/dist/server/server.js.map +1 -1
- package/dist/server/validators.d.ts +26 -6
- package/dist/server/validators.js +17 -0
- package/dist/server/validators.js.map +1 -1
- package/dist/skills-remote.js +64 -6
- package/dist/skills-remote.js.map +1 -1
- package/dist/workflows/run.d.ts +277 -12
- package/dist/workflows/run.js +599 -79
- package/dist/workflows/run.js.map +1 -1
- package/dist/workspace/agent-profiles.d.ts +30 -3
- package/dist/workspace/agent-profiles.js +39 -4
- package/dist/workspace/agent-profiles.js.map +1 -1
- package/dist/workspace/config.js +25 -4
- package/dist/workspace/config.js.map +1 -1
- package/dist/workspace/project-owner.d.ts +210 -0
- package/dist/workspace/project-owner.js +518 -0
- package/dist/workspace/project-owner.js.map +1 -0
- package/package.json +5 -3
- package/scripts/pi-leader-extension.ts +420 -0
- package/scripts/sync-readme.mjs +83 -2
- package/web/dist/assets/{alert-dialog-BVsVcbFy.js → alert-dialog-D6rP6d39.js} +1 -1
- package/web/dist/assets/arrow-down-DMOfFIzW.js +1 -0
- package/web/dist/assets/arrow-left-C4Ec2BUg.js +1 -0
- package/web/dist/assets/{centered-state-Djgly6Ni.js → centered-state-B0ZqrPaa.js} +12 -12
- package/web/dist/assets/chevron-right-mHJ-crvn.js +1 -0
- package/web/dist/assets/{collapsible-DZ4D-DHG.js → collapsible-DchEHgUM.js} +1 -1
- package/web/dist/assets/{commit-list-B-z1JL9G.js → commit-list-BpMim1Rv.js} +1 -1
- package/web/dist/assets/{compare-variants-CdS8r8E2.js → compare-variants-D5ItQbAq.js} +1 -1
- package/web/dist/assets/{diff-BKew9rQX.js → diff-HqqZ_WDR.js} +2 -2
- package/web/dist/assets/{diff-stat-D0mc5V6Z.js → diff-stat-NsU-3ecr.js} +1 -1
- package/web/dist/assets/{diff-view-xpIcuLIC.js → diff-view-B7c11Xux.js} +1 -1
- package/web/dist/assets/{dropdown-menu-CEQziH7X.js → dropdown-menu-CtTpnyod.js} +1 -1
- package/web/dist/assets/{editable-title-BCX3T2BY.js → editable-title-BXtuGQry.js} +1 -1
- package/web/dist/assets/{ellipsis-vertical-ByVdDc4z.js → ellipsis-vertical-MHtGZSH6.js} +1 -1
- package/web/dist/assets/{file-xBSB5hXO.js → file-DKLw5SOb.js} +1 -1
- package/web/dist/assets/{folder-CldgbZ5A.js → folder-Drw6-ufH.js} +1 -1
- package/web/dist/assets/{git-toolbar-BYlnf4qf.js → git-toolbar-BQH8bORV.js} +1 -1
- package/web/dist/assets/github-ynnpKFCJ.js +1 -0
- package/web/dist/assets/{image-preview-Cv5mZr0n.js → image-preview-DLhMN_R9.js} +1 -1
- package/web/dist/assets/index-BEsrNdXt.js +29 -0
- package/web/dist/assets/index-Da8DOBau.css +2 -0
- package/web/dist/assets/{markdown-CgEEE2ND.js → markdown-q365eN6Y.js} +1 -1
- package/web/dist/assets/{new-task-form-1r2bgsdD.js → new-task-form-CW-hNIWQ.js} +1 -1
- package/web/dist/assets/{pill-q-x22_ej.js → pill-B_TFulXa.js} +1 -1
- package/web/dist/assets/{project-router-VDN4jQM8.js → project-router-CLPc-ImZ.js} +1 -1
- package/web/dist/assets/{prompt-templates-BmZtCe-L.js → prompt-templates-CLc4RxyO.js} +1 -1
- package/web/dist/assets/{repo-git-C2On8SlI.js → repo-git-Is7R6-Tj.js} +1 -1
- package/web/dist/assets/{run-diff-vguEMJzh.js → run-diff-DHMvDlVo.js} +2 -2
- package/web/dist/assets/run-header-DvZJbQ8I.js +1 -0
- package/web/dist/assets/{search-x-QmhaAbg5.js → search-x-Ce2MMetu.js} +1 -1
- package/web/dist/assets/{skill-empty-hint-BrzUwByZ.js → skill-empty-hint-C_xCSvzB.js} +1 -1
- package/web/dist/assets/skills-CivqD4si.js +1 -0
- package/web/dist/assets/{sparkles-CP8QDOgX.js → sparkles-BCqPoj5g.js} +1 -1
- package/web/dist/assets/{square-terminal-CGypshSD.js → square-terminal-ikj5g-oK.js} +1 -1
- package/web/dist/assets/{tab-link-D4lFzzI1.js → tab-link-VsEjFV1Y.js} +1 -1
- package/web/dist/assets/{task-changes-6aopqAmV.js → task-changes-CH-E81-_.js} +1 -1
- package/web/dist/assets/{task-commits-u-dwaCyw.js → task-commits-DqfkMFxp.js} +1 -1
- package/web/dist/assets/{task-files-IMOZnIUK.js → task-files-D_nkHZ_a.js} +2 -2
- package/web/dist/assets/task-thread-bxQompxJ.js +9 -0
- package/web/dist/assets/{textarea-CyBCyKIk.js → textarea-xajuW1L_.js} +1 -1
- package/web/dist/assets/{thread-loading-Cuq2jchC.js → thread-loading-C3JQZbIE.js} +1 -1
- package/web/dist/assets/{trash-2-B6Dp3ZNs.js → trash-2-hJrBhpUD.js} +1 -1
- package/web/dist/assets/{triangle-alert-xBya8FUp.js → triangle-alert-D1u82y1a.js} +1 -1
- package/web/dist/assets/{upload-D6MXEB9p.js → upload-Bn6FBZ59.js} +1 -1
- package/web/dist/assets/{use-desktop-fLDKEJoB.js → use-desktop-DOIMfHfY.js} +1 -1
- package/web/dist/assets/{use-submit-shortcut-JTpNzU-u.js → use-submit-shortcut-Dj4DHTdE.js} +1 -1
- package/web/dist/assets/utils-YwBpOoRN.js +64 -0
- package/web/dist/assets/{workflows-BY3KTkFw.js → workflows-CTaAKz2m.js} +3 -3
- package/web/dist/assets/{zoomable-image-GTYwLtkS.js → zoomable-image-C1-6P3tg.js} +1 -1
- package/web/dist/index.html +23 -23
- package/web/dist/assets/arrow-down-CYgAlZtW.js +0 -1
- package/web/dist/assets/arrow-left-BOqE0a3k.js +0 -1
- package/web/dist/assets/chevron-right-Cc9BWnbN.js +0 -1
- package/web/dist/assets/github-CqGK62Lw.js +0 -1
- package/web/dist/assets/index-3nxVmdn5.css +0 -2
- package/web/dist/assets/index-qX7n11FX.js +0 -9
- package/web/dist/assets/refresh-cw-DcNCj2nu.js +0 -1
- package/web/dist/assets/run-header-DM7MiKj9.js +0 -1
- package/web/dist/assets/skills-Bj-uG_Hz.js +0 -1
- package/web/dist/assets/task-thread-CbMPmrWq.js +0 -9
- package/web/dist/assets/utils--z9hRtl3.js +0 -64
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type ServiceDispatch } from '../service-adapter.ts';
|
|
3
|
+
import { type McpToolContext } from '../tool.ts';
|
|
4
|
+
/**
|
|
5
|
+
* Project configuration for the bound project (#97, F-05, F-12, F-16; D-03 in
|
|
6
|
+
* `docs/features/mcp-server/mcp-settings-classification.md`, which this module implements and
|
|
7
|
+
* does not re-decide).
|
|
8
|
+
*
|
|
9
|
+
* THE BOUNDARY. A leader reads and writes THIS project's own settings, workflows, skills,
|
|
10
|
+
* automations and worktrees. Shared (workspace, machine, home) settings are served only as the
|
|
11
|
+
* effective capability or limit the classification names, with what it withholds withheld.
|
|
12
|
+
* Everything the classification marks `excluded` is an explicit action here that answers a
|
|
13
|
+
* refusal naming its boundary and dispatches NOTHING — so a leader asking for it learns why, and
|
|
14
|
+
* no argument can route around it. There is no project id argument anywhere: the project is the
|
|
15
|
+
* connection's (D-01 § 1.5), and a call that names one is refused rather than silently
|
|
16
|
+
* redirected.
|
|
17
|
+
*
|
|
18
|
+
* THE SAME RULES AS THE COCKPIT. Every effect is one of the cockpit's own routes, dispatched
|
|
19
|
+
* in-process under `/api/v1/p/<bound project>/…` through the same validators, 400/404/409
|
|
20
|
+
* answers and stores (N-02). Two of those guarantees are load-bearing and are deliberately NOT
|
|
21
|
+
* re-implemented here, because a second copy is how they would drift:
|
|
22
|
+
* - `PUT /agent-config/:id` answers 409 whenever `capabilities().localHandoff` is false (it
|
|
23
|
+
* closes a hooks-based remote-code-execution path). A write goes THROUGH that route, so the
|
|
24
|
+
* 409 applies to MCP exactly as to the cockpit;
|
|
25
|
+
* - built-in workflows answer 400 on delete, `stepsIssue` refuses a bad chain, and a
|
|
26
|
+
* `.xezar/workflows` file is written with `wx` unless `overwrite` says otherwise.
|
|
27
|
+
*
|
|
28
|
+
* WHAT THIS MODULE ADDS, all of it narrowing (the classification's § 7):
|
|
29
|
+
* - E-SCOPE-USER: a catalog file whose `scope` is `'user'` is refused, read and write alike,
|
|
30
|
+
* keyed off the CATALOG FIELD and never off a path. The refusal is identical whether or not
|
|
31
|
+
* the file exists, so it is not an existence oracle;
|
|
32
|
+
* - a catalog file that resolves OUTSIDE the project (an in-repo symlink into a home folder) is
|
|
33
|
+
* refused too — the route writes through a symlink, and a project write must stay local in
|
|
34
|
+
* effect (requirements § 8);
|
|
35
|
+
* - an MCP-holding project file is read as STRUCTURE only (§ 4.2, ruling 12): key names and
|
|
36
|
+
* value kinds, never a value;
|
|
37
|
+
* - E-NARROW: the registry, the workspace settings, the account listing and the skills-update
|
|
38
|
+
* state are reduced to the bound project's own facts before anything is returned;
|
|
39
|
+
* - no action takes a command. A workflow is saved with agent steps only: a check step's
|
|
40
|
+
* `command` is a shell command the service runs later, and F-08 / § 3 keep arbitrary
|
|
41
|
+
* operating-system processes out of this surface (`execution-control.test.ts` pins it for
|
|
42
|
+
* the whole registry). The cockpit's Import → Save can store one; through MCP it is refused,
|
|
43
|
+
* never stripped;
|
|
44
|
+
* - and the other half of that rule (F-22, #262): no action REMOVES a check step either. A
|
|
45
|
+
* save that would overwrite or shadow an on-disk workflow holding one, and a delete of such a
|
|
46
|
+
* workflow, are refused as a quality-gate blocker before anything is dispatched — refusing to
|
|
47
|
+
* add a gate while allowing its removal would protect nothing;
|
|
48
|
+
* - automations match the cockpit FORM, not the wider route contract (D-97, I-097, I-098):
|
|
49
|
+
* create takes `name`, `prompt` and `enable` plus the form's fixed values, and update edits
|
|
50
|
+
* `name` and `prompt` and carries everything else through, exactly as the edit form does.
|
|
51
|
+
*
|
|
52
|
+
* WHAT IS NEVER RETURNED: an account identity (email, organisation, plan — F-12, N-01), the
|
|
53
|
+
* launch key or any credential (F-15), another project's row, or an absolute path outside the
|
|
54
|
+
* project. Paths inside the project are reported relative to its root.
|
|
55
|
+
*
|
|
56
|
+
* WHERE THE SERVICE COMES FROM. `McpToolContext` does not carry the service's in-process entry
|
|
57
|
+
* yet (#86 shipped it without one). Like the sibling tools, this one reads it from an optional
|
|
58
|
+
* `service` field on the context and answers an honest tool error when it is absent.
|
|
59
|
+
*/
|
|
60
|
+
export type ProjectConfigContext = McpToolContext & {
|
|
61
|
+
readonly service?: ServiceDispatch;
|
|
62
|
+
};
|
|
63
|
+
/** Every action a leader may take. Each is one cockpit route (or a narrowed read of one). */
|
|
64
|
+
export declare const PROJECT_CONFIG_ACTIONS: readonly ['get_config', 'set_config', 'get_project', 'set_project', 'get_prompt_templates', 'set_prompt_templates', 'get_limits', 'get_capabilities', 'get_account', 'list_agent_config', 'read_agent_config', 'write_agent_config', 'list_workflows', 'parse_workflow', 'save_workflow', 'delete_workflow', 'list_skills', 'get_skill', 'list_importable_skills', 'refresh_skills', 'check_skill_updates', 'list_automations', 'get_automation', 'create_automation', 'update_automation', 'delete_automation', 'enable_automation', 'pause_automation', 'check_automation', 'get_automation_check', 'get_automation_log', 'retry_automation_receipt', 'list_worktrees', 'reclaim_worktrees', 'remove_worktree'];
|
|
65
|
+
export type ProjectConfigAction = (typeof PROJECT_CONFIG_ACTIONS)[number];
|
|
66
|
+
/** The boundaries a refusal can name. Stable identifiers — the refusal's structured content
|
|
67
|
+
* carries one, and the text names it. */
|
|
68
|
+
export type ConfigBoundary = 'project-binding' | 'workspace-settings' | 'agent-accounts' | 'account-identity' | 'home-file' | 'outside-project' | 'host-filesystem' | 'host-process' | 'project-registry' | 'quality-gate' | 'secret';
|
|
69
|
+
/**
|
|
70
|
+
* The `excluded` rows of the classification a leader might plausibly ask for, each answered with
|
|
71
|
+
* its boundary. None of them dispatches anything. Listed as actions (rather than left out of the
|
|
72
|
+
* enum) so the answer is an understandable reason, not a schema error.
|
|
73
|
+
*/
|
|
74
|
+
export declare const REFUSED_ACTIONS: {
|
|
75
|
+
readonly set_provider_enabled: {
|
|
76
|
+
readonly boundary: 'workspace-settings';
|
|
77
|
+
readonly reason: 'turning a provider on or off changes it for every project on this machine. Read provider status with get_capabilities; a person changes it in the cockpit.';
|
|
78
|
+
};
|
|
79
|
+
readonly connect_provider: {
|
|
80
|
+
readonly boundary: 'host-process';
|
|
81
|
+
readonly reason: 'connecting a provider opens a login terminal on the host machine. A person does this in the cockpit.';
|
|
82
|
+
};
|
|
83
|
+
readonly retry_provider: {
|
|
84
|
+
readonly boundary: 'workspace-settings';
|
|
85
|
+
readonly reason: 'clearing a provider authentication incident clears it for every project. Report the blocker instead; a person clears it in the cockpit.';
|
|
86
|
+
};
|
|
87
|
+
readonly create_account: {
|
|
88
|
+
readonly boundary: 'agent-accounts';
|
|
89
|
+
readonly reason: 'agent accounts are global and administered by a person, not by a project leader.';
|
|
90
|
+
};
|
|
91
|
+
readonly update_account: {
|
|
92
|
+
readonly boundary: 'agent-accounts';
|
|
93
|
+
readonly reason: 'agent accounts are global and administered by a person, not by a project leader.';
|
|
94
|
+
};
|
|
95
|
+
readonly remove_account: {
|
|
96
|
+
readonly boundary: 'agent-accounts';
|
|
97
|
+
readonly reason: 'agent accounts are global and administered by a person, not by a project leader.';
|
|
98
|
+
};
|
|
99
|
+
readonly select_account: {
|
|
100
|
+
readonly boundary: 'agent-accounts';
|
|
101
|
+
readonly reason: 'the account a project uses is stored with the global accounts. Read the effective account with get_account; a person changes it in the cockpit.';
|
|
102
|
+
};
|
|
103
|
+
readonly check_account_status: {
|
|
104
|
+
readonly boundary: 'agent-accounts';
|
|
105
|
+
readonly reason: 'probing one named account is global account administration. Provider status is in get_capabilities.';
|
|
106
|
+
};
|
|
107
|
+
readonly get_account_details: {
|
|
108
|
+
readonly boundary: 'account-identity';
|
|
109
|
+
readonly reason: 'account identity is never served to a project leader.';
|
|
110
|
+
};
|
|
111
|
+
readonly open_account_file: {
|
|
112
|
+
readonly boundary: 'host-process';
|
|
113
|
+
readonly reason: 'opening an account folder launches an application on the host machine.';
|
|
114
|
+
};
|
|
115
|
+
readonly set_workspace_config: {
|
|
116
|
+
readonly boundary: 'workspace-settings';
|
|
117
|
+
readonly reason: 'workspace settings and limits apply to every project. Read the effective limits with get_limits; this project’s own settings are set_config and set_project.';
|
|
118
|
+
};
|
|
119
|
+
readonly set_workspace_ui_state: {
|
|
120
|
+
readonly boundary: 'workspace-settings';
|
|
121
|
+
readonly reason: 'the workspace preference bag describes the person at the keyboard and is shared by every project.';
|
|
122
|
+
};
|
|
123
|
+
readonly browse_folders: {
|
|
124
|
+
readonly boundary: 'host-filesystem';
|
|
125
|
+
readonly reason: 'browsing folders lists host directories outside this project.';
|
|
126
|
+
};
|
|
127
|
+
readonly add_project: {
|
|
128
|
+
readonly boundary: 'project-registry';
|
|
129
|
+
readonly reason: 'registering projects manages the workspace, not this project.';
|
|
130
|
+
};
|
|
131
|
+
readonly clone_project: {
|
|
132
|
+
readonly boundary: 'project-registry';
|
|
133
|
+
readonly reason: 'cloning creates and registers a checkout outside this project.';
|
|
134
|
+
};
|
|
135
|
+
readonly remove_project: {
|
|
136
|
+
readonly boundary: 'project-registry';
|
|
137
|
+
readonly reason: 'removing a project deregisters it from the workspace and ends this connection’s binding.';
|
|
138
|
+
};
|
|
139
|
+
readonly apply_skill_updates: {
|
|
140
|
+
readonly boundary: 'workspace-settings';
|
|
141
|
+
readonly reason: 'applying skill updates rewrites globally installed skills every project reads. check_skill_updates reports what is available.';
|
|
142
|
+
};
|
|
143
|
+
readonly import_skills: {
|
|
144
|
+
readonly boundary: 'workspace-settings';
|
|
145
|
+
readonly reason: 'the imported-skills list is a workspace-wide preference. list_skills shows this project’s effective catalog.';
|
|
146
|
+
};
|
|
147
|
+
readonly get_launch_key: {
|
|
148
|
+
readonly boundary: 'secret';
|
|
149
|
+
readonly reason: 'the launch key is a credential and never enters a tool response.';
|
|
150
|
+
};
|
|
151
|
+
readonly open_in_app: {
|
|
152
|
+
readonly boundary: 'host-process';
|
|
153
|
+
readonly reason: 'opening the project launches a desktop application on the host machine.';
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
export type RefusedAction = keyof typeof REFUSED_ACTIONS;
|
|
157
|
+
export declare const projectConfigInputSchema: z.ZodObject<{
|
|
158
|
+
action: z.ZodEnum<{
|
|
159
|
+
add_project: "add_project";
|
|
160
|
+
apply_skill_updates: "apply_skill_updates";
|
|
161
|
+
browse_folders: "browse_folders";
|
|
162
|
+
check_account_status: "check_account_status";
|
|
163
|
+
check_automation: "check_automation";
|
|
164
|
+
check_skill_updates: "check_skill_updates";
|
|
165
|
+
clone_project: "clone_project";
|
|
166
|
+
connect_provider: "connect_provider";
|
|
167
|
+
create_account: "create_account";
|
|
168
|
+
create_automation: "create_automation";
|
|
169
|
+
delete_automation: "delete_automation";
|
|
170
|
+
delete_workflow: "delete_workflow";
|
|
171
|
+
enable_automation: "enable_automation";
|
|
172
|
+
get_account: "get_account";
|
|
173
|
+
get_account_details: "get_account_details";
|
|
174
|
+
get_automation: "get_automation";
|
|
175
|
+
get_automation_check: "get_automation_check";
|
|
176
|
+
get_automation_log: "get_automation_log";
|
|
177
|
+
get_capabilities: "get_capabilities";
|
|
178
|
+
get_config: "get_config";
|
|
179
|
+
get_launch_key: "get_launch_key";
|
|
180
|
+
get_limits: "get_limits";
|
|
181
|
+
get_project: "get_project";
|
|
182
|
+
get_prompt_templates: "get_prompt_templates";
|
|
183
|
+
get_skill: "get_skill";
|
|
184
|
+
import_skills: "import_skills";
|
|
185
|
+
list_agent_config: "list_agent_config";
|
|
186
|
+
list_automations: "list_automations";
|
|
187
|
+
list_importable_skills: "list_importable_skills";
|
|
188
|
+
list_skills: "list_skills";
|
|
189
|
+
list_workflows: "list_workflows";
|
|
190
|
+
list_worktrees: "list_worktrees";
|
|
191
|
+
open_account_file: "open_account_file";
|
|
192
|
+
open_in_app: "open_in_app";
|
|
193
|
+
parse_workflow: "parse_workflow";
|
|
194
|
+
pause_automation: "pause_automation";
|
|
195
|
+
read_agent_config: "read_agent_config";
|
|
196
|
+
reclaim_worktrees: "reclaim_worktrees";
|
|
197
|
+
refresh_skills: "refresh_skills";
|
|
198
|
+
remove_account: "remove_account";
|
|
199
|
+
remove_project: "remove_project";
|
|
200
|
+
remove_worktree: "remove_worktree";
|
|
201
|
+
retry_automation_receipt: "retry_automation_receipt";
|
|
202
|
+
retry_provider: "retry_provider";
|
|
203
|
+
save_workflow: "save_workflow";
|
|
204
|
+
select_account: "select_account";
|
|
205
|
+
set_config: "set_config";
|
|
206
|
+
set_project: "set_project";
|
|
207
|
+
set_prompt_templates: "set_prompt_templates";
|
|
208
|
+
set_provider_enabled: "set_provider_enabled";
|
|
209
|
+
set_workspace_config: "set_workspace_config";
|
|
210
|
+
set_workspace_ui_state: "set_workspace_ui_state";
|
|
211
|
+
update_account: "update_account";
|
|
212
|
+
update_automation: "update_automation";
|
|
213
|
+
write_agent_config: "write_agent_config";
|
|
214
|
+
}>;
|
|
215
|
+
projectId: z.ZodOptional<z.ZodUnknown>;
|
|
216
|
+
config: z.ZodOptional<z.ZodObject<{
|
|
217
|
+
baseBranch: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
218
|
+
defaultRunner: z.ZodOptional<z.ZodEnum<{
|
|
219
|
+
claude: "claude";
|
|
220
|
+
codex: "codex";
|
|
221
|
+
opencode: "opencode";
|
|
222
|
+
pi: "pi";
|
|
223
|
+
}>>;
|
|
224
|
+
systemPrompt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
225
|
+
defaultModels: z.ZodOptional<z.ZodObject<{
|
|
226
|
+
claude: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
227
|
+
codex: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
228
|
+
opencode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
229
|
+
pi: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
230
|
+
}, z.core.$strip>>;
|
|
231
|
+
memoryLimitMb: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
232
|
+
worktreeRetention: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
233
|
+
liveTitleUpdates: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
234
|
+
reviewGate: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
235
|
+
plannerModel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
236
|
+
namerModel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
237
|
+
skillsRepos: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
238
|
+
repo: z.ZodString;
|
|
239
|
+
ref: z.ZodOptional<z.ZodString>;
|
|
240
|
+
}, z.core.$strip>>>>;
|
|
241
|
+
}, z.core.$strict>>;
|
|
242
|
+
project: z.ZodOptional<z.ZodObject<{
|
|
243
|
+
maxParallel: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
244
|
+
tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
245
|
+
}, z.core.$strict>>;
|
|
246
|
+
promptTemplates: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
247
|
+
id: z.ZodString;
|
|
248
|
+
label: z.ZodString;
|
|
249
|
+
text: z.ZodString;
|
|
250
|
+
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
251
|
+
}, z.core.$strip>>>;
|
|
252
|
+
fileId: z.ZodOptional<z.ZodString>;
|
|
253
|
+
content: z.ZodOptional<z.ZodString>;
|
|
254
|
+
version: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
255
|
+
yaml: z.ZodOptional<z.ZodString>;
|
|
256
|
+
workflow: z.ZodOptional<z.ZodObject<{
|
|
257
|
+
name: z.ZodString;
|
|
258
|
+
description: z.ZodOptional<z.ZodString>;
|
|
259
|
+
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
260
|
+
overwrite: z.ZodOptional<z.ZodBoolean>;
|
|
261
|
+
steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
262
|
+
id: z.ZodString;
|
|
263
|
+
name: z.ZodOptional<z.ZodString>;
|
|
264
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
265
|
+
skill: z.ZodOptional<z.ZodString>;
|
|
266
|
+
model: z.ZodOptional<z.ZodString>;
|
|
267
|
+
runner: z.ZodOptional<z.ZodEnum<{
|
|
268
|
+
claude: "claude";
|
|
269
|
+
codex: "codex";
|
|
270
|
+
opencode: "opencode";
|
|
271
|
+
pi: "pi";
|
|
272
|
+
}>>;
|
|
273
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
274
|
+
bashAllowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
275
|
+
timeout: z.ZodOptional<z.ZodString>;
|
|
276
|
+
}, z.core.$strict>>>;
|
|
277
|
+
}, z.core.$strict>>;
|
|
278
|
+
name: z.ZodOptional<z.ZodString>;
|
|
279
|
+
wait: z.ZodOptional<z.ZodBoolean>;
|
|
280
|
+
refresh: z.ZodOptional<z.ZodBoolean>;
|
|
281
|
+
automationId: z.ZodOptional<z.ZodString>;
|
|
282
|
+
automation: z.ZodOptional<z.ZodObject<{
|
|
283
|
+
name: z.ZodString;
|
|
284
|
+
prompt: z.ZodString;
|
|
285
|
+
enable: z.ZodOptional<z.ZodBoolean>;
|
|
286
|
+
}, z.core.$strict>>;
|
|
287
|
+
update: z.ZodOptional<z.ZodObject<{
|
|
288
|
+
name: z.ZodOptional<z.ZodString>;
|
|
289
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
290
|
+
expectedRevision: z.ZodNumber;
|
|
291
|
+
}, z.core.$strict>>;
|
|
292
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
293
|
+
execute: "execute";
|
|
294
|
+
preview: "preview";
|
|
295
|
+
}>>;
|
|
296
|
+
checkId: z.ZodOptional<z.ZodString>;
|
|
297
|
+
receiptId: z.ZodOptional<z.ZodString>;
|
|
298
|
+
logQuery: z.ZodOptional<z.ZodObject<{
|
|
299
|
+
automationId: z.ZodOptional<z.ZodString>;
|
|
300
|
+
result: z.ZodOptional<z.ZodEnum<{
|
|
301
|
+
baseline: "baseline";
|
|
302
|
+
duplicate: "duplicate";
|
|
303
|
+
error: "error";
|
|
304
|
+
launched: "launched";
|
|
305
|
+
"no-match": "no-match";
|
|
306
|
+
preview: "preview";
|
|
307
|
+
"rate-limited": "rate-limited";
|
|
308
|
+
}>>;
|
|
309
|
+
event: z.ZodOptional<z.ZodEnum<{
|
|
310
|
+
"issue.labeled": "issue.labeled";
|
|
311
|
+
"issue.opened": "issue.opened";
|
|
312
|
+
"issue.unlabeled": "issue.unlabeled";
|
|
313
|
+
"pull_request.opened": "pull_request.opened";
|
|
314
|
+
}>>;
|
|
315
|
+
since: z.ZodOptional<z.ZodString>;
|
|
316
|
+
cursor: z.ZodOptional<z.ZodNumber>;
|
|
317
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
318
|
+
}, z.core.$strict>>;
|
|
319
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
320
|
+
expectedVersion: z.ZodOptional<z.ZodString>;
|
|
321
|
+
operationId: z.ZodOptional<z.ZodString>;
|
|
322
|
+
}, z.core.$strict>;
|
|
323
|
+
export type ProjectConfigInput = z.output<typeof projectConfigInputSchema>;
|
|
324
|
+
/** The next legitimate action after a quality-gate refusal. It offers no waiver, to anyone (A-22). */
|
|
325
|
+
export declare const QUALITY_GATE_NEXT_ACTION: string;
|
|
326
|
+
/**
|
|
327
|
+
* Whether `path` really lands inside `root` once every symlink on the way is followed. The
|
|
328
|
+
* cockpit's writer goes THROUGH a symlink (`files.ts`), so an in-repo `.claude/settings.json`
|
|
329
|
+
* linked into a home folder would turn a project write into a home write. A path that does not
|
|
330
|
+
* exist yet is judged by its nearest existing ancestor — the directory the write would create it in.
|
|
331
|
+
*/
|
|
332
|
+
export declare function resolvesInside(root: string, path: string): boolean;
|
|
333
|
+
type Shape = string | {
|
|
334
|
+
[key: string]: Shape;
|
|
335
|
+
};
|
|
336
|
+
/** Key names and value kinds down to `STRUCTURE_DEPTH`. Every scalar — command strings, args,
|
|
337
|
+
* env values, headers, URLs, tokens — is reported as its kind (ruling 12, F-15). */
|
|
338
|
+
export declare function structureOf(value: unknown, depth?: number): Shape;
|
|
339
|
+
export declare const projectConfigTool: import("../tool.ts").McpTool<z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>>;
|
|
340
|
+
export {};
|