flightdeck-connect 0.1.0__tar.gz

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.
Files changed (33) hide show
  1. flightdeck_connect-0.1.0/PKG-INFO +205 -0
  2. flightdeck_connect-0.1.0/README.md +178 -0
  3. flightdeck_connect-0.1.0/pyproject.toml +105 -0
  4. flightdeck_connect-0.1.0/setup.cfg +4 -0
  5. flightdeck_connect-0.1.0/src/conductor/__init__.py +46 -0
  6. flightdeck_connect-0.1.0/src/conductor/chain_gate.py +572 -0
  7. flightdeck_connect-0.1.0/src/conductor/cli.py +1059 -0
  8. flightdeck_connect-0.1.0/src/conductor/connect.py +370 -0
  9. flightdeck_connect-0.1.0/src/conductor/local_board.py +1023 -0
  10. flightdeck_connect-0.1.0/src/conductor/mcp.py +2087 -0
  11. flightdeck_connect-0.1.0/src/conductor/policy.py +474 -0
  12. flightdeck_connect-0.1.0/src/conductor/verifier.py +433 -0
  13. flightdeck_connect-0.1.0/src/conductor/verify_pack.py +104 -0
  14. flightdeck_connect-0.1.0/src/conductor/workspaces.py +181 -0
  15. flightdeck_connect-0.1.0/src/flightdeck_connect.egg-info/PKG-INFO +205 -0
  16. flightdeck_connect-0.1.0/src/flightdeck_connect.egg-info/SOURCES.txt +31 -0
  17. flightdeck_connect-0.1.0/src/flightdeck_connect.egg-info/dependency_links.txt +1 -0
  18. flightdeck_connect-0.1.0/src/flightdeck_connect.egg-info/entry_points.txt +6 -0
  19. flightdeck_connect-0.1.0/src/flightdeck_connect.egg-info/requires.txt +3 -0
  20. flightdeck_connect-0.1.0/src/flightdeck_connect.egg-info/top_level.txt +1 -0
  21. flightdeck_connect-0.1.0/tests/test_chain_gate.py +136 -0
  22. flightdeck_connect-0.1.0/tests/test_cli_workspace_plumbing.py +229 -0
  23. flightdeck_connect-0.1.0/tests/test_connect.py +271 -0
  24. flightdeck_connect-0.1.0/tests/test_flightdeck_inbox_lane.py +402 -0
  25. flightdeck_connect-0.1.0/tests/test_flightdeck_mcp_tools.py +504 -0
  26. flightdeck_connect-0.1.0/tests/test_policy.py +333 -0
  27. flightdeck_connect-0.1.0/tests/test_read_exam.py +96 -0
  28. flightdeck_connect-0.1.0/tests/test_revision_context.py +233 -0
  29. flightdeck_connect-0.1.0/tests/test_verifier.py +172 -0
  30. flightdeck_connect-0.1.0/tests/test_verifier_win32.py +228 -0
  31. flightdeck_connect-0.1.0/tests/test_verify_pack_cli.py +69 -0
  32. flightdeck_connect-0.1.0/tests/test_wheel_smoke.py +142 -0
  33. flightdeck_connect-0.1.0/tests/test_workspaces.py +160 -0
@@ -0,0 +1,205 @@
1
+ Metadata-Version: 2.4
2
+ Name: flightdeck-connect
3
+ Version: 0.1.0
4
+ Summary: The MCP rail for NorthGate AI FlightDeck — provision governed MCP tools into Claude Code, Cursor, and Codex; run governed agent lanes; verify signed evidence packs offline.
5
+ Author-email: NorthGate Strategic LLC <support@northgatestrategic.com>
6
+ License: Proprietary
7
+ Project-URL: Homepage, https://ai-flightdeck.com
8
+ Project-URL: Company, https://airecai.com
9
+ Keywords: ai,agents,mcp,model-context-protocol,ai-flightdeck,evidence,verification,audit,conductor
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: Other/Proprietary License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.8
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: System :: Systems Administration
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ Provides-Extra: dev
26
+ Requires-Dist: pytest>=7.0; extra == "dev"
27
+
28
+ # conductor-cli
29
+
30
+ Agent CLI + Model Context Protocol server for **Conductor** — NorthGate's
31
+ AI-assisted-delivery governance substrate.
32
+
33
+ After `pip install conductor-cli` you get:
34
+
35
+ - **`conductor`** — a stdlib-only HTTP client for the `/v1/conductor/*` API.
36
+ - **`conductor-mcp`** — a stdio JSON-RPC Model Context Protocol server that
37
+ exposes **34 tools** (21 `conductor_*` + 13 `flightdeck_*`, scoped at
38
+ runtime via `MCP_TOOL_SET=flightdeck|conductor|all`) to MCP-aware agent
39
+ runtimes (Claude Code, Cursor, Codex, VS Code agents). The `flightdeck_*`
40
+ family implements the FlightDeck Agent Contract v1 loop —
41
+ `get_handoff → read_exam → prepare_workspace → submit_return`.
42
+ - **`flightdeck-verify`** — standalone offline evidence-pack verifier
43
+ (stdlib-only; exit 0/1/2; `--json`).
44
+ - **`flightdeck-gate`** — pre-merge git gate for verify-gated merges
45
+ (chain walk + accept-gate conjuncts + reference-transaction guard).
46
+
47
+ ## Install
48
+
49
+ ```bash
50
+ pip install conductor-cli
51
+ ```
52
+
53
+ Zero runtime dependencies (pure Python stdlib). Python 3.8+.
54
+
55
+ ## Auth
56
+
57
+ The CLI authenticates one of two ways:
58
+
59
+ | Header | Env var | Source |
60
+ |---|---|---|
61
+ | `X-Agent-Token` | `CONDUCTOR_AGENT_TOKEN` | Service token issued by `/v1/conductor/projects/{id}/agent-tokens`. Preferred for agents. |
62
+ | `X-JWT-Token` | `CONDUCTOR_USER_JWT` | A standard TrustSHIELD access token. Fallback for humans. |
63
+
64
+ ```bash
65
+ export CONDUCTOR_AGENT_TOKEN=cdtr_...
66
+ conductor whoami
67
+ ```
68
+
69
+ ## CLI quickstart
70
+
71
+ ```bash
72
+ # Probe auth + caller mode
73
+ conductor whoami
74
+
75
+ # Project + task ops
76
+ conductor project list
77
+ conductor project create --name "TrustSHIELD Conductor delivery"
78
+ conductor task list --project <project-id>
79
+
80
+ # Workflow transition (Policy Mesh gated)
81
+ conductor transition TASK-0040 \
82
+ --action submit_review --to-state review_ready \
83
+ --actor-member-id <member-id> \
84
+ --reason "tests pass, ruff clean" \
85
+ --evidence gitlab_mr=https://gitlab.com/.../merge_requests/126
86
+
87
+ # Release pack — download + offline verify
88
+ conductor export --project <project-id> --out release.tar.gz
89
+ conductor verify release.tar.gz
90
+ # -> Exit 0 + "OK: pack integrity verified." == nothing tampered.
91
+ ```
92
+
93
+ `conductor --help` lists every subcommand. `--json` on any command gives
94
+ machine-readable output for scripting; the default is friendly text.
95
+
96
+ ## Local board mode
97
+
98
+ Local board mode is the zero-cloud bridge for IDEs. It operates directly on a
99
+ filesystem board folder:
100
+
101
+ ```text
102
+ <Project Conductor folder>/queue/TASK-*.md
103
+ ```
104
+
105
+ No `CONDUCTOR_AGENT_TOKEN` or `CONDUCTOR_USER_JWT` is required.
106
+
107
+ ```bash
108
+ BOARD="C:/Users/ericg/OneDrive - NorthGate Strategic LLC/Project Conductor"
109
+
110
+ conductor --json local list --board "$BOARD"
111
+ conductor --json local list --board "$BOARD" --state READY
112
+ conductor --json local read TASK-0001 --board "$BOARD"
113
+ conductor local handoff TASK-0001 --board "$BOARD"
114
+ ```
115
+
116
+ Create and update packets:
117
+
118
+ ```bash
119
+ conductor --json local create \
120
+ --board "$BOARD" \
121
+ --title "Audit the installer handoff" \
122
+ --objective "Verify artifacts and append evidence." \
123
+ --owner Codex \
124
+ --reviewer "Claude Code"
125
+
126
+ conductor --json local signal TASK-0001 \
127
+ --board "$BOARD" \
128
+ --state REVIEW_READY \
129
+ --action submit_review \
130
+ --verdict "Audit completed; report attached." \
131
+ --next "Reviewer checks the evidence and accepts or requests changes."
132
+ ```
133
+
134
+ ## MCP server (Claude Code / Cursor / Codex)
135
+
136
+ The `conductor-mcp` script implements the Model Context Protocol
137
+ (2024-11-05) over stdio. Sample config snippets:
138
+
139
+ **Claude Code** (`~/.config/claude/claude_desktop_config.json` or project-
140
+ level `.mcp.json`):
141
+
142
+ ```json
143
+ {
144
+ "mcpServers": {
145
+ "conductor": {
146
+ "command": "conductor-mcp",
147
+ "env": {
148
+ "CONDUCTOR_AGENT_TOKEN": "cdtr_..."
149
+ }
150
+ }
151
+ }
152
+ }
153
+ ```
154
+
155
+ **Cursor** (`~/.cursor/mcp.json`):
156
+
157
+ ```json
158
+ {
159
+ "mcpServers": {
160
+ "conductor": {
161
+ "command": "conductor-mcp",
162
+ "env": {
163
+ "CONDUCTOR_AGENT_TOKEN": "cdtr_..."
164
+ }
165
+ }
166
+ }
167
+ }
168
+ ```
169
+
170
+ After restart, the agent's tool list includes 21 `conductor_*` tools —
171
+ `conductor_project_list`, `conductor_transition`, `conductor_export`,
172
+ `conductor_verify`, plus local-board tools such as `conductor_local_list`
173
+ and `conductor_local_signal`. Tool-execution failures surface as
174
+ `isError: true` in the MCP response (per spec); protocol/transport
175
+ failures use the JSON-RPC error channel.
176
+
177
+ ## Custom API endpoint
178
+
179
+ If you're targeting an environment other than the default
180
+ (`https://airec-api-dxol6hwotq-uk.a.run.app`):
181
+
182
+ ```bash
183
+ export CONDUCTOR_API_BASE=https://your-conductor-api.example.com
184
+ # OR pass per-invocation:
185
+ conductor --api-base https://your-conductor-api.example.com whoami
186
+ ```
187
+
188
+ ## Offline pack verification
189
+
190
+ `conductor verify <pack.tar.gz>` works without API access. It extracts the
191
+ archive in a temp dir, walks `SHA256SUMS` to verify every file's hash, then
192
+ walks `audit-chain/chain.jsonl` to confirm per-tenant chain integrity
193
+ (monotonic `chain_position` + `prev_event_hash` threading). Either kind of
194
+ tampering surfaces a non-zero exit and a specific error.
195
+
196
+ The check is identical to the embedded `audit-chain/verify.py` script that
197
+ ships inside every pack — `conductor verify` is the more convenient
198
+ hand-typed form.
199
+
200
+ ## Source
201
+
202
+ Mirror of `packages/api/src/conductor/{cli,mcp}.py` from the upstream
203
+ TrustSHIELD repo. See
204
+ [Conductor-Build-Plan-2026-05-23.md](https://gitlab.com/dcairecai-group/erics-workspace)
205
+ sections 4.2 + 5 for the full design.
@@ -0,0 +1,178 @@
1
+ # conductor-cli
2
+
3
+ Agent CLI + Model Context Protocol server for **Conductor** — NorthGate's
4
+ AI-assisted-delivery governance substrate.
5
+
6
+ After `pip install conductor-cli` you get:
7
+
8
+ - **`conductor`** — a stdlib-only HTTP client for the `/v1/conductor/*` API.
9
+ - **`conductor-mcp`** — a stdio JSON-RPC Model Context Protocol server that
10
+ exposes **34 tools** (21 `conductor_*` + 13 `flightdeck_*`, scoped at
11
+ runtime via `MCP_TOOL_SET=flightdeck|conductor|all`) to MCP-aware agent
12
+ runtimes (Claude Code, Cursor, Codex, VS Code agents). The `flightdeck_*`
13
+ family implements the FlightDeck Agent Contract v1 loop —
14
+ `get_handoff → read_exam → prepare_workspace → submit_return`.
15
+ - **`flightdeck-verify`** — standalone offline evidence-pack verifier
16
+ (stdlib-only; exit 0/1/2; `--json`).
17
+ - **`flightdeck-gate`** — pre-merge git gate for verify-gated merges
18
+ (chain walk + accept-gate conjuncts + reference-transaction guard).
19
+
20
+ ## Install
21
+
22
+ ```bash
23
+ pip install conductor-cli
24
+ ```
25
+
26
+ Zero runtime dependencies (pure Python stdlib). Python 3.8+.
27
+
28
+ ## Auth
29
+
30
+ The CLI authenticates one of two ways:
31
+
32
+ | Header | Env var | Source |
33
+ |---|---|---|
34
+ | `X-Agent-Token` | `CONDUCTOR_AGENT_TOKEN` | Service token issued by `/v1/conductor/projects/{id}/agent-tokens`. Preferred for agents. |
35
+ | `X-JWT-Token` | `CONDUCTOR_USER_JWT` | A standard TrustSHIELD access token. Fallback for humans. |
36
+
37
+ ```bash
38
+ export CONDUCTOR_AGENT_TOKEN=cdtr_...
39
+ conductor whoami
40
+ ```
41
+
42
+ ## CLI quickstart
43
+
44
+ ```bash
45
+ # Probe auth + caller mode
46
+ conductor whoami
47
+
48
+ # Project + task ops
49
+ conductor project list
50
+ conductor project create --name "TrustSHIELD Conductor delivery"
51
+ conductor task list --project <project-id>
52
+
53
+ # Workflow transition (Policy Mesh gated)
54
+ conductor transition TASK-0040 \
55
+ --action submit_review --to-state review_ready \
56
+ --actor-member-id <member-id> \
57
+ --reason "tests pass, ruff clean" \
58
+ --evidence gitlab_mr=https://gitlab.com/.../merge_requests/126
59
+
60
+ # Release pack — download + offline verify
61
+ conductor export --project <project-id> --out release.tar.gz
62
+ conductor verify release.tar.gz
63
+ # -> Exit 0 + "OK: pack integrity verified." == nothing tampered.
64
+ ```
65
+
66
+ `conductor --help` lists every subcommand. `--json` on any command gives
67
+ machine-readable output for scripting; the default is friendly text.
68
+
69
+ ## Local board mode
70
+
71
+ Local board mode is the zero-cloud bridge for IDEs. It operates directly on a
72
+ filesystem board folder:
73
+
74
+ ```text
75
+ <Project Conductor folder>/queue/TASK-*.md
76
+ ```
77
+
78
+ No `CONDUCTOR_AGENT_TOKEN` or `CONDUCTOR_USER_JWT` is required.
79
+
80
+ ```bash
81
+ BOARD="C:/Users/ericg/OneDrive - NorthGate Strategic LLC/Project Conductor"
82
+
83
+ conductor --json local list --board "$BOARD"
84
+ conductor --json local list --board "$BOARD" --state READY
85
+ conductor --json local read TASK-0001 --board "$BOARD"
86
+ conductor local handoff TASK-0001 --board "$BOARD"
87
+ ```
88
+
89
+ Create and update packets:
90
+
91
+ ```bash
92
+ conductor --json local create \
93
+ --board "$BOARD" \
94
+ --title "Audit the installer handoff" \
95
+ --objective "Verify artifacts and append evidence." \
96
+ --owner Codex \
97
+ --reviewer "Claude Code"
98
+
99
+ conductor --json local signal TASK-0001 \
100
+ --board "$BOARD" \
101
+ --state REVIEW_READY \
102
+ --action submit_review \
103
+ --verdict "Audit completed; report attached." \
104
+ --next "Reviewer checks the evidence and accepts or requests changes."
105
+ ```
106
+
107
+ ## MCP server (Claude Code / Cursor / Codex)
108
+
109
+ The `conductor-mcp` script implements the Model Context Protocol
110
+ (2024-11-05) over stdio. Sample config snippets:
111
+
112
+ **Claude Code** (`~/.config/claude/claude_desktop_config.json` or project-
113
+ level `.mcp.json`):
114
+
115
+ ```json
116
+ {
117
+ "mcpServers": {
118
+ "conductor": {
119
+ "command": "conductor-mcp",
120
+ "env": {
121
+ "CONDUCTOR_AGENT_TOKEN": "cdtr_..."
122
+ }
123
+ }
124
+ }
125
+ }
126
+ ```
127
+
128
+ **Cursor** (`~/.cursor/mcp.json`):
129
+
130
+ ```json
131
+ {
132
+ "mcpServers": {
133
+ "conductor": {
134
+ "command": "conductor-mcp",
135
+ "env": {
136
+ "CONDUCTOR_AGENT_TOKEN": "cdtr_..."
137
+ }
138
+ }
139
+ }
140
+ }
141
+ ```
142
+
143
+ After restart, the agent's tool list includes 21 `conductor_*` tools —
144
+ `conductor_project_list`, `conductor_transition`, `conductor_export`,
145
+ `conductor_verify`, plus local-board tools such as `conductor_local_list`
146
+ and `conductor_local_signal`. Tool-execution failures surface as
147
+ `isError: true` in the MCP response (per spec); protocol/transport
148
+ failures use the JSON-RPC error channel.
149
+
150
+ ## Custom API endpoint
151
+
152
+ If you're targeting an environment other than the default
153
+ (`https://airec-api-dxol6hwotq-uk.a.run.app`):
154
+
155
+ ```bash
156
+ export CONDUCTOR_API_BASE=https://your-conductor-api.example.com
157
+ # OR pass per-invocation:
158
+ conductor --api-base https://your-conductor-api.example.com whoami
159
+ ```
160
+
161
+ ## Offline pack verification
162
+
163
+ `conductor verify <pack.tar.gz>` works without API access. It extracts the
164
+ archive in a temp dir, walks `SHA256SUMS` to verify every file's hash, then
165
+ walks `audit-chain/chain.jsonl` to confirm per-tenant chain integrity
166
+ (monotonic `chain_position` + `prev_event_hash` threading). Either kind of
167
+ tampering surfaces a non-zero exit and a specific error.
168
+
169
+ The check is identical to the embedded `audit-chain/verify.py` script that
170
+ ships inside every pack — `conductor verify` is the more convenient
171
+ hand-typed form.
172
+
173
+ ## Source
174
+
175
+ Mirror of `packages/api/src/conductor/{cli,mcp}.py` from the upstream
176
+ TrustSHIELD repo. See
177
+ [Conductor-Build-Plan-2026-05-23.md](https://gitlab.com/dcairecai-group/erics-workspace)
178
+ sections 4.2 + 5 for the full design.
@@ -0,0 +1,105 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ # PyPI distribution name is flightdeck-connect (the marketed on-ramp:
7
+ # `pip install flightdeck-connect`). "conductor-cli" was unavailable on
8
+ # PyPI (third-party AGPL project), and the canon (docs 2026-07-26)
9
+ # keeps conductor-* for internal paths/imports only — the import
10
+ # package stays `conductor`, all five console-script names unchanged.
11
+ name = "flightdeck-connect"
12
+ version = "0.1.0"
13
+ description = "The MCP rail for NorthGate AI FlightDeck — provision governed MCP tools into Claude Code, Cursor, and Codex; run governed agent lanes; verify signed evidence packs offline."
14
+ readme = "README.md"
15
+ license = { text = "Proprietary" }
16
+ requires-python = ">=3.8"
17
+ authors = [
18
+ { name = "NorthGate Strategic LLC", email = "support@northgatestrategic.com" }
19
+ ]
20
+ keywords = [
21
+ "ai", "agents", "mcp", "model-context-protocol", "ai-flightdeck",
22
+ "evidence", "verification", "audit", "conductor"
23
+ ]
24
+ classifiers = [
25
+ "Development Status :: 4 - Beta",
26
+ "Intended Audience :: Developers",
27
+ "License :: Other/Proprietary License",
28
+ "Operating System :: OS Independent",
29
+ "Programming Language :: Python :: 3",
30
+ "Programming Language :: Python :: 3.8",
31
+ "Programming Language :: Python :: 3.9",
32
+ "Programming Language :: Python :: 3.10",
33
+ "Programming Language :: Python :: 3.11",
34
+ "Programming Language :: Python :: 3.12",
35
+ "Programming Language :: Python :: 3.13",
36
+ "Topic :: Software Development :: Libraries :: Python Modules",
37
+ "Topic :: System :: Systems Administration",
38
+ ]
39
+
40
+ # Intentionally zero runtime dependencies. The CLI + MCP server use
41
+ # pure Python stdlib (argparse, urllib, json, tarfile, hashlib, etc.)
42
+ # so install is fast and dependency conflicts are impossible.
43
+ dependencies = []
44
+
45
+ [project.optional-dependencies]
46
+ # Test-only deps. `pip install flightdeck-connect[dev]` to run the smoke
47
+ # tests bundled in the source tree.
48
+ dev = [
49
+ "pytest>=7.0",
50
+ ]
51
+
52
+ [project.scripts]
53
+ # `conductor` — the HTTP client CLI.
54
+ # $ conductor whoami
55
+ # $ conductor project list
56
+ # $ conductor transition TASK-0040 --action submit_review --to-state review_ready ...
57
+ conductor = "conductor.cli:main"
58
+
59
+ # `conductor-mcp` — the stdio JSON-RPC MCP server.
60
+ # In a Claude Code / Cursor / VS Code agent's MCP config:
61
+ # {
62
+ # "mcpServers": {
63
+ # "conductor": {
64
+ # "command": "conductor-mcp",
65
+ # "env": { "CONDUCTOR_AGENT_TOKEN": "cdtr_..." }
66
+ # }
67
+ # }
68
+ # }
69
+ conductor-mcp = "conductor.mcp:main"
70
+
71
+ # `flightdeck-verify` — the standalone offline evidence-pack verifier
72
+ # (the community wedge: "check what an AI agent claims it did" as a
73
+ # one-liner; no API access, no account, stdlib only).
74
+ # $ flightdeck-verify release-pack.tar.gz
75
+ # $ flightdeck-verify release-pack.tar.gz --json
76
+ flightdeck-verify = "conductor.verify_pack:main"
77
+
78
+ # `flightdeck-gate` — the verify-gated merge (Epic 1.5): a git
79
+ # pre-merge-commit hook engine that refuses FlightDeck lane merges the
80
+ # tamper-evident chain has not verified for EXACTLY the commit landing.
81
+ # $ flightdeck-gate install-hook --board <board> --repo <repo>
82
+ # $ flightdeck-gate check --board <board> --repo <repo> --head <sha>
83
+ flightdeck-gate = "conductor.chain_gate:main"
84
+
85
+ # `flightdeck-connect` — the river's first inch (2026-07-25): provision
86
+ # the FlightDeck MCP server into the coding tools on this machine
87
+ # (Claude Code project .mcp.json / Cursor mcp.json / `codex mcp add`),
88
+ # by task profile (agent|cloud|operator -> MCP_TOOL_SET), idempotently,
89
+ # chain-recording the provisioning when a board is given. Kimi is
90
+ # detected and honestly reported as the file-handoff rail (its CLI
91
+ # exposes no MCP surface today).
92
+ # $ flightdeck-connect --status
93
+ # $ flightdeck-connect --repo C:/proj --profile agent --board <board>
94
+ flightdeck-connect = "conductor.connect:main"
95
+
96
+ [project.urls]
97
+ "Homepage" = "https://ai-flightdeck.com"
98
+ "Company" = "https://airecai.com"
99
+
100
+ [tool.setuptools]
101
+ package-dir = { "" = "src" }
102
+
103
+ [tool.setuptools.packages.find]
104
+ where = ["src"]
105
+ include = ["conductor*"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,46 @@
1
+ """
2
+ Conductor CLI + MCP server — standalone PyPI distribution.
3
+
4
+ This is the agent-facing entry point to the Conductor substrate
5
+ (https://gitlab.com/dcairecai-group/erics-workspace, packages/api/
6
+ src/conductor/*). It ships FOUR console scripts:
7
+
8
+ conductor — the stdlib-only HTTP client for /v1/conductor/*
9
+ conductor-mcp — the stdio JSON-RPC Model Context Protocol server
10
+ (34 tools: 21 conductor_* + 13 flightdeck_*,
11
+ scoped at runtime via MCP_TOOL_SET)
12
+ flightdeck-verify — standalone offline evidence-pack verifier
13
+ flightdeck-gate — pre-merge git gate (verify-gated merge hook)
14
+
15
+ After `pip install conductor-cli`, an agent's MCP config (Claude
16
+ Code / Cursor / Codex) can point at `conductor-mcp` (or
17
+ `python -m conductor.mcp`) and the tools appear in the agent's tool
18
+ list — including the FlightDeck Agent Contract v1 loop
19
+ (get_handoff -> read_exam -> prepare_workspace -> submit_return;
20
+ see docs/spec/agent-contract.md).
21
+
22
+ This package is intentionally minimal:
23
+ - Pure Python stdlib. No third-party deps.
24
+ - Python 3.8+ supported (the embedded release-pack verifier runs
25
+ on even older interpreters, but this package targets 3.8+ to
26
+ match the CLI's tarfile filter='data' fallback path).
27
+ - Source modules: cli.py + mcp.py (upstream mirrors) plus the
28
+ package-native local_board.py, verifier.py, workspaces.py,
29
+ policy.py, verify_pack.py, chain_gate.py.
30
+
31
+ Source-of-truth provenance:
32
+ The canonical copies of cli.py + mcp.py live at
33
+ `packages/api/src/conductor/{cli,mcp}.py` in the upstream repo.
34
+ THIS package's copies are MIRRORS — when the upstream files
35
+ change, mirror the change here too. A drift-guard test in the
36
+ upstream repo (packages/api/tests/test_conductor_cli_mirror.py
37
+ — added alongside this package) sha256-compares the two copies
38
+ and fails CI if they diverge. (Known drift to reconcile at next
39
+ upstream sync: mcp.py SERVER_VERSION "0.5.0" vs package 0.1.0.)
40
+ The remaining modules are package-native — this package is their
41
+ canonical home.
42
+ """
43
+
44
+ __version__ = "0.1.0"
45
+
46
+ __all__ = ["__version__"]