@honua/mcp-server 0.1.9-beta.0 → 0.1.11-beta.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.
Files changed (39) hide show
  1. package/certification/setup-parity.md +79 -0
  2. package/dist/src/certification/admin-parity.d.ts +7 -1
  3. package/dist/src/certification/admin-parity.d.ts.map +1 -1
  4. package/dist/src/certification/admin-parity.js +9 -2
  5. package/dist/src/certification/setup-parity.d.ts +86 -0
  6. package/dist/src/certification/setup-parity.d.ts.map +1 -0
  7. package/dist/src/certification/setup-parity.js +188 -0
  8. package/dist/src/eval/cli.js +2 -2
  9. package/dist/src/eval/corpus.d.ts.map +1 -1
  10. package/dist/src/eval/corpus.js +6 -5
  11. package/dist/src/eval/grade.d.ts.map +1 -1
  12. package/dist/src/eval/grade.js +25 -0
  13. package/dist/src/eval/report.d.ts +9 -0
  14. package/dist/src/eval/report.d.ts.map +1 -1
  15. package/dist/src/eval/report.js +15 -5
  16. package/dist/src/eval/runner.d.ts.map +1 -1
  17. package/dist/src/eval/runner.js +16 -1
  18. package/dist/src/eval/types.d.ts +37 -2
  19. package/dist/src/eval/types.d.ts.map +1 -1
  20. package/dist/src/eval/workflow-corpus.d.ts +9 -0
  21. package/dist/src/eval/workflow-corpus.d.ts.map +1 -0
  22. package/dist/src/eval/workflow-corpus.js +306 -0
  23. package/dist/src/proxy.d.ts.map +1 -1
  24. package/dist/src/proxy.js +7 -1
  25. package/dist/src/release/zero-to-map-checkpoint.d.ts.map +1 -1
  26. package/dist/src/release/zero-to-map-checkpoint.js +9 -1
  27. package/dist/src/release/zero-to-map-cli.d.ts +11 -1
  28. package/dist/src/release/zero-to-map-cli.d.ts.map +1 -1
  29. package/dist/src/release/zero-to-map-cli.js +52 -12
  30. package/dist/src/release/zero-to-map.d.ts +132 -59
  31. package/dist/src/release/zero-to-map.d.ts.map +1 -1
  32. package/dist/src/release/zero-to-map.js +459 -167
  33. package/package.json +7 -4
  34. package/release/zero-to-map/README.md +76 -79
  35. package/release/zero-to-map/configs/claude-code.mcp.json +1 -1
  36. package/release/zero-to-map/configs/claude-desktop.json +1 -1
  37. package/release/zero-to-map/configs/cursor.json +1 -1
  38. package/release/zero-to-map/journey.v1.json +965 -502
  39. package/release/zero-to-map/contracts/esri-gp-mcp.v1.json +0 -73
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@honua/mcp-server",
3
- "version": "0.1.9-beta.0",
3
+ "version": "0.1.11-beta.0",
4
4
  "description": "Platform-free MCP server for geospatial services: expose discovery, query, and analysis over any public ArcGIS/Esri FeatureServer or OGC API endpoint to any MCP client, with no platform lock-in",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Honua",
@@ -56,6 +56,7 @@
56
56
  "test:certification": "npm run build --silent && vitest run test/certification && node dist/src/certification/cli.js",
57
57
  "test:certification:admin": "vitest run test/proxy.test.ts test/certification/admin-parity.test.ts",
58
58
  "certify:admin-parity": "npm run build --silent && node dist/src/certification/admin-parity.js",
59
+ "certify:setup-parity": "npm run build --silent && node dist/src/certification/setup-parity.js",
59
60
  "test:certification:artifact": "npm run build --silent && node dist/src/certification/cli.js --artifact-only",
60
61
  "test:certification:standalone": "npm run build --silent && node dist/src/certification/cli.js --target standalone",
61
62
  "test:certification:standalone-ogc": "npm run build --silent && node dist/src/certification/cli.js --target standalone-ogc",
@@ -82,12 +83,13 @@
82
83
  "zod": "^3.24.0"
83
84
  },
84
85
  "overrides": {
85
- "hono": "^4.12.27",
86
+ "hono": "^4.13.7",
86
87
  "@hono/node-server": "^2.0.5",
87
- "fast-uri": "^3.1.3"
88
+ "fast-uri": "^3.1.6",
89
+ "qs": "^6.16.0"
88
90
  },
89
91
  "peerDependencies": {
90
- "@honua/sdk-js": "^0.1.9-beta.0"
92
+ "@honua/sdk-js": "^0.1.11-beta.0"
91
93
  },
92
94
  "devDependencies": {
93
95
  "@biomejs/biome": "1.9.4",
@@ -101,6 +103,7 @@
101
103
  "dist/src",
102
104
  "release/zero-to-map",
103
105
  "certification/geospatial-mcp-schemas",
106
+ "certification/setup-parity.md",
104
107
  "README.md",
105
108
  "LICENSE"
106
109
  ],
@@ -1,15 +1,25 @@
1
1
  # Zero-to-map 2026.1 release journey
2
2
 
3
+ The September 9 release decision on #1401 narrows first-cut qualification.
4
+ This older journey still exercises the broader Admin/analysis and multi-family
5
+ Studio integration. Its roster is not the bounded 2026.1 setup gate. Use the
6
+ [pinned setup catalog check](../../certification/setup-parity.md) for that
7
+ gate's HTTP/stdio discovery evidence; retain separate install and style/render
8
+ execution receipts. Full Admin MCP and broader analysis qualification remain
9
+ outside the bounded first-cut dependency chain.
10
+
3
11
  This bundle is the executable contract for `honua-release#123` D9.3: install
4
- Honua, configure and publish deterministic data with AI-accessible admin tools,
5
- run Buffer through the AI-facing Esri MCP tool, the SDK's Esri GPServer
6
- compatibility path, and the MCP-native analysis verb, compose distinct map,
7
- app, and dashboard packages in Studio, save each as an immutable version, read
8
- that exact version, reopen it as a new draft, record three publication intents,
9
- and save three new intent-bearing versions. It then stops at the human Console
10
- gate before verifying the three approved public URLs. Both MCP
11
- jobs are polled through `honua://jobs/{id}` and joined to their
12
- `honua://jobs/{id}/results` packages; a queued submission alone cannot pass.
12
+ Honua, configure and publish deterministic data with the closed admin roster,
13
+ buffer the published parcels with `honua_validate_plan` then
14
+ `honua_execute_plan` (`analytics.buffer-aggregate`), prove `geometry.buffer`
15
+ through the SDK GPServer runner, compose distinct map, app, and dashboard
16
+ packages in Studio, save each as an immutable version, and publish that saved
17
+ version. An admin `honua_studio_propose_publication` returns `shareUrl` with
18
+ `humanConfirmationRequired: false`. The same session fetches each share URL and
19
+ requires HTTP 200. It does not import a Console receipt and it does not require
20
+ a second principal. The buffer job is polled through `honua://jobs/{jobId}` to
21
+ terminal success, and `artifacts[].artifactId` is read from
22
+ `honua://jobs/{jobId}/results`; a queued submission alone cannot pass.
13
23
 
14
24
  The driver reuses `honua admin install` and `honua-mcp-proxy`. It does not ship
15
25
  a second installer, admin client, or MCP transport. The installer is the
@@ -49,17 +59,21 @@ Prerequisites:
49
59
 
50
60
  - Node.js 20.19 or newer and Docker with Compose
51
61
  - the 2026.1 `honua` CLI work from `honua-sdk-js#1370-#1373`
52
- - a server build exposing the complete default 432-tool roster (47 static plus
53
- 385 `honua_admin_*` tools), with all eleven secret/session Admin operations
54
- absent, **and** the `analysis` and `esri-gp` server profiles enabled so the
55
- three `honua_esri_gp_*` tools and `honua_buffer_features` are advertised
56
- (441 tools in total), plus the Studio lifecycle tools including
57
- `honua_studio_save_version`, `honua_studio_get_version`, and
58
- `honua_studio_reopen_version`
59
- - the `geoprocessing/Buffer` GPServer task seeded by the deployment
62
+ - one admin credential. The journey does not require a second principal
63
+ - a server build that advertises the closed operator roster this journey calls:
64
+ `honua_admin_connections_create`, `honua_admin_connections_test`,
65
+ `honua_admin_import_upload_url`, `honua_admin_layer_publish`,
66
+ `honua_admin_services_access_policy_set`, `honua_admin_server_status`,
67
+ `honua_admin_api_key_list`, `honua_admin_api_key_effective_permissions`,
68
+ `honua_validate_plan`, `honua_execute_plan`, and the Studio lifecycle tools
69
+ including `honua_studio_save_version`, `honua_studio_get_version`,
70
+ `honua_studio_reopen_version`, and `honua_studio_propose_publication`.
71
+ It does not require a 432- or 441-tool catalog, and it does not require the
72
+ `analysis` or `esri-gp` profiles. `honua_esri_gp_*` and `honua_buffer_features`
73
+ are not called
74
+ - the `geoprocessing/Buffer` GPServer task seeded for the separate
75
+ `geometry.buffer` proof. That task takes WKB and has no `layerId`
60
76
  - these fixtures available to the server at an HTTP(S) base URL
61
- - a writable checkpoint path; the first pass emits the exact resolved Console
62
- receipt request after all pre-approval work completes
63
77
 
64
78
  Serve the checked-in fixtures from a URL reachable by the Honua container, for
65
79
  example with an existing static-file server. Then run:
@@ -78,26 +92,32 @@ npm run release:zero-to-map -- \
78
92
  --output ./zero-to-map-live-receipt.json
79
93
  ```
80
94
 
81
- The first pass exits `2` with `external-receipt-missing`. It has already run
82
- stages 1-5 exactly once. Give the checkpoint's resolved
83
- `consoleReceiptRequest` to the Console producer, carry
84
- `checkpoint.integrity.digest` outside that file, and resume with the same
85
- command plus:
95
+ `dbSecretReference` is a request-supplied secret reference: the journey sends
96
+ it to the server, and the server resolves it from its own environment. The
97
+ server the journey runs against must therefore both define that variable (the
98
+ fixture database connection string) and permit it in its allowlist for
99
+ request-supplied secret references (honua-server #5055), which is
100
+ deny-by-default. Permit exactly this one name rather than a prefix, in the
101
+ server's environment:
86
102
 
87
103
  ```sh
88
- --checkpoint-digest <checkpoint.integrity.digest> \
89
- --console-receipt ./console-approval.json
104
+ Security__RequestSecretReferences__AllowedEnvironmentVariables__0=HONUA_ZERO_TO_MAP_DB_CONNECTION
90
105
  ```
91
106
 
92
- The resume atomically claims the checkpoint before any adapter work. A second
93
- or concurrent claimant fails closed. The checkpoint is bound to the exact plan
94
- bytes, SDK source SHA (`HONUA_SOURCE_REVISION`), target, MCP endpoint,
95
- candidate/release, and (for AWS) provisioning receipt; it contains only
96
- allowlisted captures/evidence, including the non-secret deterministic
97
- `serviceName` identity and access-credential ID/grants/reference digest required
98
- by external producers, and never the database password, admin key, token, or
99
- authorization material. A successful resume
100
- marks it consumed and binds the final receipt hash.
107
+ Without that entry the `create-connection` action in stage 2 is refused before
108
+ any connection is stored. Server images that predate the setting ignore the
109
+ variable. `honua admin install local` does not write either variable into the
110
+ compose file it generates, so add both to the `honua` service's environment (or
111
+ start an equivalent server yourself) before running with `--execute`. If you
112
+ pass a different `--var dbSecretReference=env:<NAME>`, permit `<NAME>` instead.
113
+
114
+ The live run does not pause for a Console receipt. An admin publish returns
115
+ `shareUrl` (`/api/v1/studio/published` plus the route) with
116
+ `humanConfirmationRequired: false`, and the journey fetches that URL. A
117
+ root-relative share path is resolved against the MCP endpoint origin. HTTP is
118
+ accepted only for a loopback origin; any other share URL must be HTTPS and must
119
+ not embed credentials. One admin credential performs configuration, publication,
120
+ and the fetch.
101
121
 
102
122
  For a deployment already provisioned by the DevOps ECS producer, use
103
123
  `--target aws-ecs --provision-receipt <pre-teardown-binding.json>`. The binding
@@ -107,27 +127,14 @@ the real image/digest, Terraform, readiness, and a secret-free access receipt
107
127
  whose reference digest is verified against the producer's Secrets Manager ARN;
108
128
  it does not invoke or pretend to invoke the Docker installer.
109
129
 
110
- The catalog is checked in full before the first MCP call. Missing tools or
111
- input-schema drift block the run without sending that call.
112
-
113
- The preflight verifies each enabled server profile independently and *derives*
114
- the expected total from them; it never compares the catalog against a single
115
- hardcoded number:
116
-
117
- | Profile | Members | Verified by |
118
- | --- | --- | --- |
119
- | `base` | 47 static + 385 `honua_admin_*` = 432 | the generated Admin contract, plus the 11 audited secret/session exclusions proven absent |
120
- | `analysis` | 6 | `honua_buffer_features` by name; the rest by declared size (the server has not published an `analysis` roster - honua-server#3363) |
121
- | `esri-gp` | 3 | exactly `honua_esri_gp_list_tasks`, `honua_esri_gp_describe_task`, `honua_esri_gp_execute_task` from `contracts/esri-gp-mcp.v1.json` |
122
-
123
- The enabled candidate therefore advertises 432 + 6 + 3 = 441 tools. A missing,
124
- unexpected, duplicate, excluded, truncated, or schema-drifted member fails with
125
- its own labelled finding naming the journey stage and action that needs the
126
- tool; a short catalog is reported as a pagination fault rather than a roster
127
- decision. The pagination safety ceiling in `listAllTools` is deliberately
128
- separate from every roster number, so reading a larger profile-enabled catalog
129
- is never mistaken for a hostile server. Default-profile certification
130
- (`certifyAdminCatalogParity`) continues to require exactly 432.
130
+ The catalog is checked before the first MCP call. The preflight selects
131
+ `tools/list` view `full` and asserts the closed roster: every tool this journey
132
+ calls, by name, with the stage and action that needs it. It does not require
133
+ 432 or 441 tools and it does not require the `analysis` or `esri-gp` profiles.
134
+ Extra advertised tools are not a failure. A duplicate name or an input schema
135
+ that rejects a planned argument blocks the run without sending that call.
136
+ Default-profile certification (`certifyAdminCatalogParity`) is a separate gate
137
+ and is not this journey's roster.
131
138
 
132
139
  The connection is
133
140
  created with `secretReference` + `secretType`; raw database credentials never
@@ -145,30 +152,20 @@ The Studio version tools are also preflighted before the first server mutation.
145
152
  Map, app, and dashboard each exercise layer, style, view, widget, and control
146
153
  mutations before validation; family-specific shortcuts or embedded lookalikes
147
154
  cannot satisfy the release roster.
148
- The journey does not treat `honua_studio_get_draft` as reopen evidence: every
149
- family must capture its `itemId`, immutable `versionId`, `contentHash`, and the
150
- new draft whose `baseVersionId` points back to that exact version. After the
151
- proposal increments that reopened draft's generation, the journey saves a new
152
- immutable publication version. Console must create and publish the request for
153
- that new version, never the earlier pre-intent version.
154
-
155
- The Console receipt is accepted only when it is `passed` and binds this
156
- journey/release contract to the exact connection, service, layers, three GP job
157
- identities, result packages/artifacts, map/app/dashboard draft and immutable
158
- version identities, all three reopened drafts and intent-bearing publication
159
- versions, all three Console request/publication/status/public-URL identities,
160
- execution operations, audit correlations, routes, candidate, and release. Each
161
- audit operation must equal its family's execution operation, each proposal ID
162
- must equal its publication request ID, and the app public URL must equal the
163
- top-level share URL. The Studio proposal actions reject any pre-approval
164
- publication ID or public URL and must report both `recorded=true` and
165
- `humanConfirmationRequired=true`. Agent execution never claims the human
166
- publication step. Stage 7 independently requires identity-preserving HTTPS
167
- HTTP 200 responses for map, app, and dashboard URLs.
155
+ The journey does not treat `honua_studio_get_draft` as reopen evidence. Save
156
+ captures read `/structuredContent/version/versionId`,
157
+ `/structuredContent/version/contentHash`, and `versionNumber` under `version`.
158
+ `honua_studio_get_version` still returns top-level `versionId` and `contentHash`.
159
+ Publication runs after that save. `honua_studio_propose_publication` takes
160
+ `itemId`, `versionId`, `contentHash`, `route`, `visibility`, and `note`. It does
161
+ not take `draftId`, `generation`, or `embed`. For this admin journey the result
162
+ has `humanConfirmationRequired: false` and a `shareUrl`. The journey fetches
163
+ each share URL and requires HTTP 200. It does not forbid `shareUrl` and it does
164
+ not wait for a second principal.
168
165
 
169
166
  ## Evidence status
170
167
 
171
168
  The fixtures, plan, contracts, and simulated end-to-end tests are deterministic.
172
- They are not a live release recording. Until all deployment dependencies are
173
- available and an operator supplies a matching Console receipt, the honest
174
- candidate result is `blocked`/`skipped`, not passed.
169
+ They are not a live release recording. Contract mode stays `blocked` and does
170
+ not start Docker. A live pass is the same admin session reaching HTTP 200 on
171
+ the three share URLs.
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "honua": {
4
4
  "command": "npx",
5
- "args": ["-y", "--package", "@honua/mcp-server@0.1.7-beta.0", "honua-mcp-proxy"],
5
+ "args": ["-y", "--package", "@honua/mcp-server@0.1.10-beta.0", "honua-mcp-proxy"],
6
6
  "env": {
7
7
  "HONUA_MCP_REMOTE_URL": "http://localhost:8080/mcp"
8
8
  }
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "honua": {
4
4
  "command": "npx",
5
- "args": ["-y", "--package", "@honua/mcp-server@0.1.7-beta.0", "honua-mcp-proxy"],
5
+ "args": ["-y", "--package", "@honua/mcp-server@0.1.10-beta.0", "honua-mcp-proxy"],
6
6
  "env": {
7
7
  "HONUA_MCP_REMOTE_URL": "http://localhost:8080/mcp"
8
8
  }
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "honua": {
4
4
  "command": "npx",
5
- "args": ["-y", "--package", "@honua/mcp-server@0.1.7-beta.0", "honua-mcp-proxy"],
5
+ "args": ["-y", "--package", "@honua/mcp-server@0.1.10-beta.0", "honua-mcp-proxy"],
6
6
  "env": {
7
7
  "HONUA_MCP_REMOTE_URL": "http://localhost:8080/mcp"
8
8
  }