@dev-mainsequence/codex-plugin 0.3.0 → 0.4.2
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/.codex-plugin/plugin.json +6 -5
- package/.mcp.json +16 -0
- package/README.md +23 -11
- package/build-info.json +3 -3
- package/dist/hosts/codexPresentation.js +1 -0
- package/dist/hosts/discovery.js +138 -0
- package/dist/hosts/panel/panel.html +165 -0
- package/dist/panel-server.js +135 -0
- package/dist/vendor/devtools/index.js +5 -1
- package/dist/vendor/devtools/package.json +1 -1
- package/dist/vendor/devtools/shared/accountScope.js +19 -0
- package/dist/vendor/devtools/shared/actions.js +11 -3
- package/dist/vendor/devtools/shared/agents.js +5 -1
- package/dist/vendor/devtools/shared/environments.js +38 -0
- package/dist/vendor/devtools/shared/mcp.js +123 -31
- package/dist/vendor/devtools/shared/mcpTransport.js +15 -2
- package/dist/vendor/devtools/shared/organizationProjects.js +2 -13
- package/dist/vendor/devtools/shared/session.js +96 -8
- package/docs/agents-tools-panel.md +63 -0
- package/docs/codex-verification.md +37 -0
- package/docs/conversational-mcp.md +1 -1
- package/package.json +9 -5
- package/skills/mainsequence-mcp/SKILL.md +1 -1
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# MainSequence Codex plugin — Agents and Tools panel
|
|
2
|
+
|
|
3
|
+
Version 0.4.2 contains a read-only MCP App. Devtools 0.3.2 remains the head: it owns backend selection, credentials, account binding, typed discovery results, environments, connection validation and MCP transport. This upgrade changes devtools and its Codex consumer; Claude and VS Code are unchanged. The packaged panel does not depend on a sibling checkout or a custom Codex.
|
|
4
|
+
|
|
5
|
+
## Use
|
|
6
|
+
|
|
7
|
+
Install MainSequence from its marketplace, then ask Codex to **open MainSequence**. Expand the resulting app card when useful. The panel displays the existing devtools account and backend, verifies the session, and lists accessible organization environments. Choose one to browse Agents or Tools. A sole environment is selected automatically; multiple environments require a choice.
|
|
8
|
+
|
|
9
|
+
Agents supports paginated directory browsing and semantic search. Search results are a ranked set, not an offset-paginated collection. Cards show descriptions, current directory runtime state, model defaults, response types and identifiers. They do not prepare a session or check live readiness.
|
|
10
|
+
|
|
11
|
+
Tools lists available project MCP releases for the chosen environment, supports search/pagination, enriches repository names through devtools, and marks saved connections. Only saved connections enable schema inspection. A saved badge describes local metadata, not current endpoint availability; inspection checks the live catalog and refuses changed endpoints. This slice does not add/remove connections or call project tools.
|
|
12
|
+
|
|
13
|
+
Refresh reloads account/environment status, retaining the selected environment only if it is still available. Changing environment clears the current page immediately. A backend/account change invalidates the prior context; late reads do not replace the current UI. Existing settings and saved connections are not rewritten by discovery. Normal credential renewal remains the existing devtools session's responsibility.
|
|
14
|
+
|
|
15
|
+
The default backend comes from devtools' existing configuration/process environment. A signed-out state offers the existing `/ms login` command; the panel never starts login itself. Process sessions can be inherited using the existing `MAINSEQUENCE_ENDPOINT`, `MAINSEQUENCE_ACCESS_TOKEN` and `MAINSEQUENCE_REFRESH_TOKEN` environment variables. Do not paste credentials into the UI or conversation.
|
|
16
|
+
|
|
17
|
+
## Boundaries
|
|
18
|
+
|
|
19
|
+
| MCP tool | Public devtools operations |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
| `mainsequence_open` | `auth-status`, verified `auth-status`, `mcp-environments` |
|
|
22
|
+
| `mainsequence_discover` | `agents-list`, or `mcp-discover` with `enrichNames: true` plus `mcp-list` with `readOnly: true`; all use `expectedAccount` |
|
|
23
|
+
| `mainsequence_tools` | `mcp-tools` for a release on the current discovery page, using `expectedAccount` |
|
|
24
|
+
|
|
25
|
+
All three tools are model- and app-accessible and return useful structured results without a UI. Their arguments are allowlisted; they do not accept arbitrary devtools actions. Context identifiers are short-lived server memory, not agent session IDs or a new persistent settings store. Restarting the MCP process requires refreshing the panel.
|
|
26
|
+
|
|
27
|
+
The 0.4.1 panel avoided `mcp-list` because devtools 0.3.1 could backfill saved names during inspection. Devtools 0.3.2 adds explicit read-only listing, which the panel now uses without migrating or writing connections. Public typed results replace host-side backend response parsing. Devtools binds the actual request/retry credentials to the selected account; Codex retains local backend-change checks, context IDs and late-view rejection. No private package imports or independent MainSequence HTTP client are introduced.
|
|
28
|
+
|
|
29
|
+
The UI uses the public MCP Apps JSON-RPC bridge. All colors, typography and radii prefer host CSS variables, with neutral light/dark fallbacks. Data is rendered as text, including external descriptions. The UI has no external fetches, scripts or fonts and declares empty connection/resource CSP lists. Its resource URI includes a build hash; the server captures immutable HTML at startup and the panel checks its identity before using results.
|
|
30
|
+
|
|
31
|
+
The existing developer-command hook and conversational MCP skill retain their behavior. Those older explicit workflows can perform user-authorized mutations; the new panel's three tools cannot. Production native agent sending and receipt recovery are the next implementation phase and still require qualified storage and authorization. Historical fixture tests are development evidence only; no probe plugin is required or shipped.
|
|
32
|
+
|
|
33
|
+
## Original 0.4.1 validation recorded on 2026-10-22
|
|
34
|
+
|
|
35
|
+
- 26 tests passed: existing hook/CLI regression tests, production dependency/package boundaries, and ten panel tests.
|
|
36
|
+
- The actual public devtools package parsed fixture account/environment/agent/MCP responses and acquired a fixture release credential for schema inspection. Saved connection bytes were unchanged; no credential persistence, agent sends or project tool invocations occurred. Credential values were absent from panel results.
|
|
37
|
+
- Detached packaged MCP server started outside the checkout, exposed exactly three read-only tools, returned immutable UI after a file changed, and refused unknown tools, arguments and resources.
|
|
38
|
+
- Simulated UI bridge verified explicit environment selection, literal text rendering, stale-result rejection, account invalidation and dark/light variable changes. It did not perform any native message or draft operation.
|
|
39
|
+
- The stock Codex backend (`0.163.0-alpha.10.2`) installed the package in an isolated profile, discovered all three tools and the versioned app resource, and refused a stale context. No model turn or MainSequence request occurred. This confirms host registration, not desktop rendering.
|
|
40
|
+
- The real local session check selected `http://127.0.0.1:8000` and returned **not signed in**, with no environment queries. No authenticated live agent/MCP directory is claimed.
|
|
41
|
+
- Browser preview of a local file was blocked by Codex's URL policy. Desktop rendering and accessibility acceptance remain unverified; bridge tests are not screenshots or live-host evidence.
|
|
42
|
+
|
|
43
|
+
Run `npm test`, `npm run release:check` and `node scripts/verify-panel-host.mjs` for code/package checks. The release check unpacks the npm archive, verifies the MCP/resource contract and runs the existing hook/CLI without `node_modules` or the source checkout. No publish occurs.
|
|
44
|
+
|
|
45
|
+
## 0.4.2 / devtools 0.3.2 upgrade
|
|
46
|
+
|
|
47
|
+
The additional regression cases exercise shared environment pagination, account changes
|
|
48
|
+
during identity verification and reads, safe same-account 401 retries, refusal to retry as
|
|
49
|
+
another account, and refresh races that preserve another process's saved account. MCP
|
|
50
|
+
tests cover byte-identical legacy-store reads, corrupt/missing stores, discovery-name
|
|
51
|
+
enrichment and no connection mutation. Codex tests cover the new public request options,
|
|
52
|
+
saved/unsaved badges and inspection controls, unchanged connection bytes and backend
|
|
53
|
+
invalidation. Verified account identity takes precedence over stale saved display metadata.
|
|
54
|
+
Existing native theme behavior remains covered by the bridge tests. Devtools passes 124
|
|
55
|
+
tests and its standalone package checks; Codex's suite contains 30 tests. The upgrade also
|
|
56
|
+
passes isolated stock Codex registration, without a model turn or MainSequence request.
|
|
57
|
+
|
|
58
|
+
The release lock pins the exact devtools archive. The release sequence publishes devtools
|
|
59
|
+
first and verifies registry integrity before building and publishing the Codex consumer.
|
|
60
|
+
The local-archive helper described in the README supports development before publication.
|
|
61
|
+
Desktop activation, rendering and authenticated live discovery remain separate acceptance steps.
|
|
62
|
+
|
|
63
|
+
Remaining acceptance: activate this package in the desktop, identify the existing signed-in backend, verify real environment/directory/catalog reads and check actual host rendering. Then implement the production saved-request/receipt relay and one explicitly authorized real agent exchange with native reply/recall and duplicate protection.
|
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# Codex plugin verification
|
|
2
2
|
|
|
3
|
+
## 0.3.1 — devtools 0.3.1: MCP names stored with saved connections (2026-10-22)
|
|
4
|
+
|
|
5
|
+
The plugin bundles [devtools 0.3.1](https://github.com/mainsequence-sdk/mainsequence-devtools/pull/15)
|
|
6
|
+
in place of 0.3.0; the hook adapter, manifest, hooks and skills are otherwise unchanged, so
|
|
7
|
+
the hook definition and its trusted hash are the same as in 0.3.0.
|
|
8
|
+
|
|
9
|
+
What the new devtools changes for this plugin:
|
|
10
|
+
|
|
11
|
+
- `mcp-add` resolves the release's name, its repository's name and its repository branch
|
|
12
|
+
and stores them with the saved connection in the shared `mcp-connections.json` as `name`,
|
|
13
|
+
`display_name` and `code_repository_branch_uid`. A label that cannot be read is left out;
|
|
14
|
+
it never makes a working MCP unavailable.
|
|
15
|
+
- `mcp-list` returns the stored labels without a backend request. A connection saved by an
|
|
16
|
+
earlier version is completed by the first listing that can read its labels. `mcp-add`,
|
|
17
|
+
`mcp-tools` and `mcp-call` results carry them on their connection, and discovery rows pass
|
|
18
|
+
the directory's `name` and `code_repository_branch_uid` through.
|
|
19
|
+
- The connections file is shared with the Claude Desktop plugin (0.4.18 pins the same
|
|
20
|
+
devtools), so a connection labelled by either host is labelled for both.
|
|
21
|
+
- The readable `/ms` output labels the new fields (`Release ID`, `Name`, `Repository`,
|
|
22
|
+
`Repository branch ID`); `--json` passes the rows to the `mainsequence-mcp` skill unchanged.
|
|
23
|
+
|
|
24
|
+
Package checks under Node 22.22.0 and npm 10.9.4, `npm run release:check`: type-check, build
|
|
25
|
+
from the registry archive of devtools 0.3.1 (`npm ci --ignore-scripts`; its integrity in
|
|
26
|
+
`package-lock.json` and `build-info.json` is the registry's `dist.integrity`), the Node tests
|
|
27
|
+
including a new case for the stored MCP connection labels in readable and `--json` output, release metadata, the standalone
|
|
28
|
+
archive and the npm archive exercised as Codex installs it. Since the pinned devtools is on
|
|
29
|
+
the registry, CI no longer names a devtools source branch; `scripts/install-devtools.cjs`
|
|
30
|
+
falls back to the pin's release tag only for an unpublished pin.
|
|
31
|
+
|
|
32
|
+
Installed-host checks with the Codex CLI 0.163.0 on macOS, in isolated `CODEX_HOME`
|
|
33
|
+
directories, the only model endpoint being the counted loopback fixture: `npm run
|
|
34
|
+
verify:codex` against this build installed from `artifacts/local-marketplace` and trusted
|
|
35
|
+
(`skills/list` and `hooks/list` as recorded for 0.3.0; all 13 prompt cases and both sync
|
|
36
|
+
cases behaved as in the 0.3.0 table below, with zero real model requests), and
|
|
37
|
+
`npm run verify:codex:reload` (same three results as for 0.3.0). The hook definition did
|
|
38
|
+
not change, so its trusted hash is still `sha256:8935862c…`.
|
|
39
|
+
|
|
3
40
|
## 0.3.0 — extraction from devtools and rename to `mainsequence` (2026-10-21)
|
|
4
41
|
|
|
5
42
|
The plugin moved out of [mainsequence-devtools](https://github.com/mainsequence-sdk/mainsequence-devtools)
|
|
@@ -35,7 +35,7 @@ If no developer session exists, use the existing Main Sequence hosted login. A c
|
|
|
35
35
|
|
|
36
36
|
Connection metadata lives in mcp-connections.json beside the existing MainSequence CLI configuration, separated by backend and release UID. Reads/calls recheck release access and fetch the current tool catalog. A changed endpoint requires an explicit add again. Removing a connection does not revoke your login.
|
|
37
37
|
|
|
38
|
-
The release UID identifies a connection.
|
|
38
|
+
The release UID identifies a connection. Since devtools 0.3.1, mcp-add also reads the release's name, its repository's name and its repository branch from the release directory and stores them with the connection as `name`, `display_name` and `code_repository_branch_uid`, so mcp-list labels a saved connection without a backend request; a connection saved by an earlier version is completed by the first listing that can read those labels, and a label that cannot be read is left out rather than making the MCP unavailable. Adding a connection and reading or calling its tools work without the labels, and UID-based operations do not repeat discovery to obtain a name. Discovery rows carry `name` and `code_repository_branch_uid` as the platform directory reports them.
|
|
39
39
|
|
|
40
40
|
Project tools enforce their ordinary permissions. The client adds no agent-specific allowlist or exclusions.
|
|
41
41
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dev-mainsequence/codex-plugin",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MainSequence
|
|
3
|
+
"version": "0.4.2",
|
|
4
|
+
"description": "MainSequence for Codex: Agents and Tools discovery using existing devtools sessions, plus developer commands and conversational MCPs",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=22"
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
},
|
|
16
16
|
"files": [
|
|
17
17
|
"dist",
|
|
18
|
-
"docs",
|
|
18
|
+
"docs/agents-tools-panel.md",
|
|
19
|
+
"docs/conversational-mcp.md",
|
|
20
|
+
"docs/codex-verification.md",
|
|
21
|
+
"docs/adr",
|
|
19
22
|
"README.md",
|
|
20
23
|
"LICENSE",
|
|
21
24
|
"NOTICE",
|
|
@@ -23,7 +26,8 @@
|
|
|
23
26
|
"hooks",
|
|
24
27
|
"skills",
|
|
25
28
|
"assets",
|
|
26
|
-
"build-info.json"
|
|
29
|
+
"build-info.json",
|
|
30
|
+
".mcp.json"
|
|
27
31
|
],
|
|
28
32
|
"scripts": {
|
|
29
33
|
"build": "node scripts/clean.cjs && tsc -p tsconfig.json && node scripts/build-codex.cjs",
|
|
@@ -36,7 +40,7 @@
|
|
|
36
40
|
"release:check": "npm run typecheck && npm test && node scripts/check-release.cjs && node scripts/pack-codex.cjs && npm pack --ignore-scripts --pack-destination artifacts && npm run verify:package"
|
|
37
41
|
},
|
|
38
42
|
"dependencies": {
|
|
39
|
-
"@dev-mainsequence/devtools": "0.3.
|
|
43
|
+
"@dev-mainsequence/devtools": "0.3.2"
|
|
40
44
|
},
|
|
41
45
|
"devDependencies": {
|
|
42
46
|
"@types/node": "18.19.130",
|
|
@@ -12,7 +12,7 @@ This workflow uses a client inside the plugin. Saved project connections can be
|
|
|
12
12
|
- For "which MCPs are available?", execute the runner with mcp-discover --json. It calls resource_release.mcp_endpoints on the platform MCP. Use --search TEXT, --limit N (up to 100), and --offset N when needed; count reports the full matching collection.
|
|
13
13
|
- Show names, release UIDs and Environment UIDs where needed to distinguish results. Discovery alone does not authorize adding every result.
|
|
14
14
|
- For "add metatable-mcp", identify the exact discovered release. If the name identifies multiple releases, ask which one. Execute mcp-add --uid RELEASE_UUID --json. Success means initialization and tool discovery succeeded and the connection was saved. Use the returned tool catalog immediately.
|
|
15
|
-
- For saved connections, execute mcp-list --json. This is local metadata, not a live health report; do not rediscover the whole directory every time the user wants to use one.
|
|
15
|
+
- For saved connections, execute mcp-list --json. This is local metadata, not a live health report; do not rediscover the whole directory every time the user wants to use one. Each row carries the release UID with the saved name, display_name (the repository's name) and code_repository_branch_uid when they were readable; use them to label a connection instead of discovering again.
|
|
16
16
|
- When asked to remove a saved connection, execute mcp-remove --uid RELEASE_UUID --json. This does not revoke the Main Sequence login.
|
|
17
17
|
|
|
18
18
|
All commands accept --backend URL. Use the endpoint already selected for the task; absent an explicit selection, the runner uses the process endpoint, current directory's endpoint, saved CLI configuration, then the standard backend. Connections are separated by backend and release UID. Do not guess or construct project URLs.
|