@honua/react 0.1.7-beta.0 → 0.1.9-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 (131) hide show
  1. package/control-plane/admin-client.d.ts +87 -0
  2. package/control-plane/admin-client.d.ts.map +1 -0
  3. package/control-plane/admin-client.js +169 -0
  4. package/control-plane/client.d.ts.map +1 -1
  5. package/control-plane/client.js +21 -3
  6. package/control-plane/commands/catalog.d.ts +133 -0
  7. package/control-plane/commands/catalog.d.ts.map +1 -0
  8. package/control-plane/commands/catalog.js +353 -0
  9. package/control-plane/commands/errors.d.ts +96 -0
  10. package/control-plane/commands/errors.d.ts.map +1 -0
  11. package/control-plane/commands/errors.js +130 -0
  12. package/control-plane/commands/identity.d.ts +71 -0
  13. package/control-plane/commands/identity.d.ts.map +1 -0
  14. package/control-plane/commands/identity.js +0 -0
  15. package/control-plane/commands/index.d.ts +39 -0
  16. package/control-plane/commands/index.d.ts.map +1 -0
  17. package/control-plane/commands/index.js +34 -0
  18. package/control-plane/commands/runtime.d.ts +146 -0
  19. package/control-plane/commands/runtime.d.ts.map +1 -0
  20. package/control-plane/commands/runtime.js +318 -0
  21. package/control-plane/commands/types.d.ts +226 -0
  22. package/control-plane/commands/types.d.ts.map +1 -0
  23. package/control-plane/commands/types.js +30 -0
  24. package/control-plane/commands/validate.d.ts +27 -0
  25. package/control-plane/commands/validate.d.ts.map +1 -0
  26. package/control-plane/commands/validate.js +132 -0
  27. package/control-plane/generated/admin-api.d.ts +30263 -0
  28. package/control-plane/generated/admin-api.d.ts.map +1 -0
  29. package/control-plane/generated/admin-api.js +5 -0
  30. package/control-plane/generated/admin-operations.d.ts +4053 -0
  31. package/control-plane/generated/admin-operations.d.ts.map +1 -0
  32. package/control-plane/generated/admin-operations.js +820 -0
  33. package/control-plane/index.d.ts +11 -0
  34. package/control-plane/index.d.ts.map +1 -1
  35. package/control-plane/index.js +8 -0
  36. package/control-plane/types.d.ts +14 -0
  37. package/control-plane/types.d.ts.map +1 -1
  38. package/core/client.js +1 -1
  39. package/core/credential-redaction.d.ts +163 -0
  40. package/core/credential-redaction.d.ts.map +1 -0
  41. package/core/credential-redaction.js +389 -0
  42. package/core/error-classifications.d.ts +15 -0
  43. package/core/error-classifications.d.ts.map +1 -1
  44. package/core/error-classifications.js +15 -0
  45. package/core/error-code-registry.d.ts +15 -0
  46. package/core/error-code-registry.d.ts.map +1 -1
  47. package/core/error-code-registry.js +15 -0
  48. package/core/grpc-adapter.d.ts +2 -2
  49. package/core/grpc-adapter.d.ts.map +1 -1
  50. package/core/grpc-adapter.js +30 -6
  51. package/core/job-run-errors.d.ts +10 -0
  52. package/core/job-run-errors.d.ts.map +1 -0
  53. package/core/job-run-errors.js +14 -0
  54. package/core/job-run-lifecycle.d.ts +34 -0
  55. package/core/job-run-lifecycle.d.ts.map +1 -0
  56. package/core/job-run-lifecycle.js +193 -0
  57. package/core/ogc-processes.d.ts +38 -31
  58. package/core/ogc-processes.d.ts.map +1 -1
  59. package/core/ogc-processes.js +123 -173
  60. package/core/process-runner.js +15 -100
  61. package/core/surfaces.d.ts +2 -8
  62. package/core/surfaces.d.ts.map +1 -1
  63. package/core/surfaces.js +21 -112
  64. package/core/types.d.ts +7 -6
  65. package/core/types.d.ts.map +1 -1
  66. package/gen/geospatial/v1/common_pb.d.ts +514 -0
  67. package/gen/geospatial/v1/common_pb.d.ts.map +1 -0
  68. package/gen/geospatial/v1/common_pb.js +335 -0
  69. package/gen/geospatial/v1/execution_types_pb.d.ts +1186 -0
  70. package/gen/geospatial/v1/execution_types_pb.d.ts.map +1 -0
  71. package/gen/geospatial/v1/execution_types_pb.js +396 -0
  72. package/gen/geospatial/v1/feature_service_pb.d.ts +403 -0
  73. package/gen/geospatial/v1/feature_service_pb.d.ts.map +1 -0
  74. package/gen/geospatial/v1/feature_service_pb.js +47 -0
  75. package/gen/geospatial/v1/index.d.ts +5 -0
  76. package/gen/geospatial/v1/index.d.ts.map +1 -0
  77. package/gen/geospatial/v1/index.js +9 -0
  78. package/gen/geospatial/v1/spatial_types_pb.d.ts +285 -0
  79. package/gen/geospatial/v1/spatial_types_pb.d.ts.map +1 -0
  80. package/gen/geospatial/v1/spatial_types_pb.js +58 -0
  81. package/gen/geospatial/v1/workspace_artifact_types_pb.d.ts +379 -0
  82. package/gen/geospatial/v1/workspace_artifact_types_pb.d.ts.map +1 -0
  83. package/gen/geospatial/v1/workspace_artifact_types_pb.js +151 -0
  84. package/generated-app/projection.d.ts.map +1 -1
  85. package/generated-app/projection.js +10 -1
  86. package/package.json +2 -2
  87. package/query-planner/grpc.d.ts +4 -4
  88. package/query-planner/grpc.d.ts.map +1 -1
  89. package/query-planner/grpc.js +11 -11
  90. package/query-planner/types.d.ts +4 -4
  91. package/query-planner/types.d.ts.map +1 -1
  92. package/runtime/errors.d.ts +1 -1
  93. package/runtime/errors.d.ts.map +1 -1
  94. package/runtime/errors.js +2 -0
  95. package/runtime/generated/map-package-schema-meta.d.ts +11 -0
  96. package/runtime/generated/map-package-schema-meta.d.ts.map +1 -0
  97. package/runtime/generated/map-package-schema-meta.js +12 -0
  98. package/runtime/generated/map-package-schema-validator.d.ts +16 -0
  99. package/runtime/generated/map-package-schema-validator.d.ts.map +1 -0
  100. package/runtime/generated/map-package-schema-validator.js +1422 -0
  101. package/runtime/index.d.ts +5 -1
  102. package/runtime/index.d.ts.map +1 -1
  103. package/runtime/index.js +6 -0
  104. package/runtime/map-package-export.d.ts +151 -0
  105. package/runtime/map-package-export.d.ts.map +1 -0
  106. package/runtime/map-package-export.js +636 -0
  107. package/runtime/map-package-validation.d.ts +21 -1
  108. package/runtime/map-package-validation.d.ts.map +1 -1
  109. package/runtime/map-package-validation.js +132 -95
  110. package/runtime/map-package.d.ts +80 -0
  111. package/runtime/map-package.d.ts.map +1 -1
  112. package/studio/chart-spec.d.ts +6 -6
  113. package/studio/chart-spec.d.ts.map +1 -1
  114. package/studio/chart-spec.js +6 -6
  115. package/studio/index.d.ts +17 -7
  116. package/studio/index.d.ts.map +1 -1
  117. package/studio/index.js +15 -5
  118. package/studio/lifecycle-client.d.ts +262 -22
  119. package/studio/lifecycle-client.d.ts.map +1 -1
  120. package/studio/lifecycle-client.js +524 -24
  121. package/studio/lifecycle-errors.d.ts +8 -2
  122. package/studio/lifecycle-errors.d.ts.map +1 -1
  123. package/studio/lifecycle-errors.js +6 -1
  124. package/studio/lifecycle-types.d.ts +228 -8
  125. package/studio/lifecycle-types.d.ts.map +1 -1
  126. package/studio/publication-status.d.ts +55 -0
  127. package/studio/publication-status.d.ts.map +1 -0
  128. package/studio/publication-status.js +103 -0
  129. package/gen/honua/v1/feature_service_pb.d.ts +0 -918
  130. package/gen/honua/v1/feature_service_pb.d.ts.map +0 -1
  131. package/gen/honua/v1/feature_service_pb.js +0 -375
@@ -1,17 +1,92 @@
1
- import { HONUA_MAP_PACKAGE_FORMAT_V1 } from "./map-package.js";
2
- const SUPPORTED_SOURCE_PROTOCOLS = new Set([
3
- "geoservices_feature_service",
4
- "geoservices_map_service",
5
- "ogc_features",
6
- "ogc_maps",
7
- "ogc_tiles",
8
- "wfs",
9
- "wms",
10
- "wmts",
11
- "odata",
12
- "vector_tile",
13
- "raster_tile",
14
- ]);
1
+ /**
2
+ * `MapPackage` validation.
3
+ *
4
+ * The *structural* rules — which properties exist, which are required, which
5
+ * scalar types and enum members are legal, how long a string may be — are not
6
+ * written here. They live in `schemas/honua-map-package.v1.json`, the canonical
7
+ * artifact schema (honua-sdk-js#1426), which `scripts/generate-map-package-validator.mjs`
8
+ * compiles into `./generated/map-package-schema-validator.js`. This module runs
9
+ * that generated validator and translates its errors into the SDK's stable
10
+ * diagnostic codes. Restating the shape in TypeScript would recreate exactly
11
+ * the parallel description the schema exists to eliminate.
12
+ *
13
+ * What stays here is everything a JSON Schema genuinely cannot express:
14
+ * cross-field resolution (does every layer's `source` resolve to a binding or
15
+ * an inline style source?), package-level uniqueness (`sourceId` collisions),
16
+ * runtime capability (which of the schema's protocols the source bridge can
17
+ * actually bind), and wall-clock lifecycle (expiry and staleness).
18
+ *
19
+ * @module
20
+ */
21
+ import { HONUA_MAP_PACKAGE_SCHEMA_PROTOCOLS } from "./generated/map-package-schema-meta.js";
22
+ import validateAgainstSchema from "./generated/map-package-schema-validator.js";
23
+ /**
24
+ * Schema-legal protocols the MapLibre source bridge cannot bind to a
25
+ * `Dataset`/`Source` today. The schema is the wire contract and admits these;
26
+ * the runtime is narrower. Deriving the bindable set by subtraction — rather
27
+ * than by writing a second list — means a protocol added to the schema is
28
+ * bindable by default and a deliberate gap has to be named here, in one place,
29
+ * with a reason.
30
+ */
31
+ const UNBINDABLE_SOURCE_PROTOCOLS = [
32
+ // `pmtiles://` archives are attached through the pmtiles protocol handler
33
+ // (`registerPmtilesProtocol`), not through `createDataset`.
34
+ "pmtiles",
35
+ // Workspace artifacts resolve through the workspace/app layer, which the
36
+ // map runtime does not depend on.
37
+ "workspace_artifact",
38
+ ];
39
+ const SUPPORTED_SOURCE_PROTOCOLS = new Set(HONUA_MAP_PACKAGE_SCHEMA_PROTOCOLS.filter((protocol) => !UNBINDABLE_SOURCE_PROTOCOLS.includes(protocol)));
40
+ /**
41
+ * Translates one Ajv error into the SDK's stable diagnostic vocabulary.
42
+ *
43
+ * The codes predate the schema and are part of the public surface, so the
44
+ * mapping is explicit rather than derived: hosts switch on these strings.
45
+ */
46
+ function schemaErrorToDiagnostic(error) {
47
+ const path = jsonPointerToPath(error.instancePath ?? "");
48
+ const missing = error.params?.missingProperty;
49
+ const fullPath = missing ? (path ? `${path}.${missing}` : missing) : path;
50
+ const detail = { schemaPath: error.schemaPath, keyword: error.keyword, params: error.params };
51
+ const message = `MapPackage does not satisfy honua-map-package.v1 at ${fullPath || "(root)"}${error.message ? `: ${error.message}` : ""}.`;
52
+ return { code: schemaErrorCode(fullPath, missing), severity: "error", message, path: fullPath || undefined, detail };
53
+ }
54
+ function schemaErrorCode(fullPath, missing) {
55
+ if (fullPath === "mapPackageId")
56
+ return "missing-map-package-id";
57
+ if (fullPath === "format")
58
+ return "unsupported-format";
59
+ if (fullPath === "sourceBindings")
60
+ return "missing-source-bindings";
61
+ if (fullPath === "mapSpec")
62
+ return "missing-map-spec";
63
+ if (fullPath.startsWith("mapSpec"))
64
+ return "invalid-map-spec";
65
+ if (fullPath.startsWith("sourceBindings[")) {
66
+ const field = fullPath.slice(fullPath.indexOf("]") + 1);
67
+ if (field === ".sourceId")
68
+ return "missing-source-id";
69
+ if (field === ".protocol")
70
+ return "unsupported-protocol";
71
+ if (field.startsWith(".locator") || missing === "locator")
72
+ return "missing-source-locator";
73
+ }
74
+ return "invalid-package";
75
+ }
76
+ /** `/sourceBindings/0/locator/url` → `sourceBindings[0].locator.url`. */
77
+ function jsonPointerToPath(pointer) {
78
+ if (pointer.length === 0)
79
+ return "";
80
+ let path = "";
81
+ for (const rawSegment of pointer.split("/").slice(1)) {
82
+ const segment = rawSegment.replace(/~1/g, "/").replace(/~0/g, "~");
83
+ if (/^\d+$/.test(segment))
84
+ path += `[${segment}]`;
85
+ else
86
+ path += path.length === 0 ? segment : `.${segment}`;
87
+ }
88
+ return path;
89
+ }
15
90
  /**
16
91
  * Validate the server-produced `MapPackage` wire shape and runtime binding
17
92
  * assumptions without throwing raw JSON/type errors. Diagnostics are
@@ -31,79 +106,61 @@ export function validateMapPackage(value, options = {}) {
31
106
  const add = (diagnostic) => {
32
107
  diagnostics.push({ ...(packageId ? { packageId } : {}), ...diagnostic });
33
108
  };
34
- if (!packageId) {
35
- add({
36
- code: "missing-map-package-id",
37
- severity: "error",
38
- message: "MapPackage.mapPackageId must be a non-empty string.",
39
- path: "mapPackageId",
40
- });
41
- }
42
- if (value.format !== HONUA_MAP_PACKAGE_FORMAT_V1) {
43
- add({
44
- code: "unsupported-format",
45
- severity: "error",
46
- message: `MapPackage.format must be "${HONUA_MAP_PACKAGE_FORMAT_V1}".`,
47
- path: "format",
48
- detail: { expected: HONUA_MAP_PACKAGE_FORMAT_V1, received: value.format },
49
- });
109
+ // Structural pass: every required/type/enum/bound rule comes from
110
+ // `schemas/honua-map-package.v1.json` by way of the generated validator.
111
+ const validator = validateAgainstSchema;
112
+ const structurallyValid = validator(value);
113
+ const schemaErrorPaths = new Set();
114
+ if (!structurallyValid) {
115
+ for (const error of validator.errors ?? []) {
116
+ const diagnostic = schemaErrorToDiagnostic(error);
117
+ if (diagnostic.path)
118
+ schemaErrorPaths.add(diagnostic.path);
119
+ add(diagnostic);
120
+ }
50
121
  }
51
122
  const sourceIds = new Set();
52
123
  const sourceBindings = value.sourceBindings;
53
- if (!Array.isArray(sourceBindings)) {
54
- add({
55
- code: "missing-source-bindings",
56
- severity: "error",
57
- message: "MapPackage.sourceBindings must be an array.",
58
- path: "sourceBindings",
59
- });
60
- }
61
- else {
124
+ if (Array.isArray(sourceBindings)) {
62
125
  for (let i = 0; i < sourceBindings.length; i += 1) {
63
126
  const binding = sourceBindings[i];
64
127
  const path = `sourceBindings[${i}]`;
65
- if (!isRecord(binding)) {
66
- add({
67
- code: "invalid-package",
68
- severity: "error",
69
- message: "MapPackage.sourceBindings entries must be objects.",
70
- path,
71
- });
128
+ if (!isRecord(binding))
72
129
  continue;
73
- }
74
130
  const sourceId = typeof binding.sourceId === "string" && binding.sourceId.length > 0 ? binding.sourceId : "";
75
- if (!sourceId) {
76
- add({
77
- code: "missing-source-id",
78
- severity: "error",
79
- message: "SourceBinding.sourceId must be a non-empty string.",
80
- path: `${path}.sourceId`,
81
- });
82
- }
83
- else if (sourceIds.has(sourceId)) {
84
- add({
85
- code: "duplicate-source",
86
- severity: "error",
87
- message: `SourceBinding sourceId "${sourceId}" is duplicated.`,
88
- path: `${path}.sourceId`,
89
- detail: { sourceId },
90
- });
91
- }
92
- else {
93
- sourceIds.add(sourceId);
131
+ if (sourceId) {
132
+ // Uniqueness is a package-level invariant; JSON Schema has no way to
133
+ // express "distinct by this property", so it stays here.
134
+ if (sourceIds.has(sourceId)) {
135
+ add({
136
+ code: "duplicate-source",
137
+ severity: "error",
138
+ message: `SourceBinding sourceId "${sourceId}" is duplicated.`,
139
+ path: `${path}.sourceId`,
140
+ detail: { sourceId },
141
+ });
142
+ }
143
+ else {
144
+ sourceIds.add(sourceId);
145
+ }
94
146
  }
147
+ // The schema already rejected values outside its protocol enum; this is
148
+ // the narrower question of what the source bridge can actually bind.
95
149
  const protocol = typeof binding.protocol === "string" ? binding.protocol : undefined;
96
- if (!protocol || !SUPPORTED_SOURCE_PROTOCOLS.has(protocol)) {
150
+ if (protocol && !SUPPORTED_SOURCE_PROTOCOLS.has(protocol) && !schemaErrorPaths.has(`${path}.protocol`)) {
97
151
  add({
98
152
  code: "unsupported-protocol",
99
153
  severity: "error",
100
- message: `SourceBinding "${sourceId || i}" uses unsupported protocol "${String(binding.protocol)}".`,
154
+ message: `SourceBinding "${sourceId || i}" uses unsupported protocol "${protocol}".`,
101
155
  path: `${path}.protocol`,
102
- detail: { sourceId, protocol: binding.protocol },
156
+ detail: { sourceId, protocol },
103
157
  });
104
158
  }
159
+ // `locator.url` is optional in the schema — a locator addressed purely by
160
+ // `serviceId` is a legal artifact — but the runtime cannot bind one, so
161
+ // the requirement is enforced here rather than in the wire contract.
105
162
  const locator = binding.locator;
106
- if (!isRecord(locator) || typeof locator.url !== "string" || locator.url.length === 0) {
163
+ if (isRecord(locator) && (typeof locator.url !== "string" || locator.url.length === 0)) {
107
164
  add({
108
165
  code: "missing-source-locator",
109
166
  severity: "error",
@@ -115,15 +172,7 @@ export function validateMapPackage(value, options = {}) {
115
172
  }
116
173
  }
117
174
  const mapSpec = value.mapSpec;
118
- if (!isRecord(mapSpec)) {
119
- add({
120
- code: "missing-map-spec",
121
- severity: "error",
122
- message: "MapPackage.mapSpec must be a MapLibre style object.",
123
- path: "mapSpec",
124
- });
125
- }
126
- else {
175
+ if (isRecord(mapSpec)) {
127
176
  validateMapSpecSources(add, mapSpec, sourceIds);
128
177
  validateStyleRefTargets(add, value, mapSpec);
129
178
  }
@@ -141,26 +190,14 @@ export function hasMapPackageDiagnosticErrors(diagnostics) {
141
190
  function validateMapSpecSources(add, mapSpec, sourceIds) {
142
191
  const mapSpecSources = isRecord(mapSpec.sources) ? new Set(Object.keys(mapSpec.sources)) : new Set();
143
192
  const layers = mapSpec.layers;
144
- if (!Array.isArray(layers)) {
145
- add({
146
- code: "invalid-map-spec",
147
- severity: "error",
148
- message: "MapPackage.mapSpec.layers must be an array.",
149
- path: "mapSpec.layers",
150
- });
193
+ // A non-array `layers`, or a non-object entry, is a structural failure the
194
+ // schema has already reported; re-reporting it here would double up.
195
+ if (!Array.isArray(layers))
151
196
  return;
152
- }
153
197
  for (let i = 0; i < layers.length; i += 1) {
154
198
  const layer = layers[i];
155
- if (!isRecord(layer)) {
156
- add({
157
- code: "invalid-map-spec",
158
- severity: "error",
159
- message: "MapPackage.mapSpec.layers entries must be objects.",
160
- path: `mapSpec.layers[${i}]`,
161
- });
199
+ if (!isRecord(layer))
162
200
  continue;
163
- }
164
201
  if (typeof layer.source !== "string")
165
202
  continue;
166
203
  if (!sourceIds.has(layer.source) && !mapSpecSources.has(layer.source)) {
@@ -129,6 +129,78 @@ export interface HonuaMapPackageLabelBinding {
129
129
  fieldName: string;
130
130
  placement?: "point" | "line" | "polygon";
131
131
  }
132
+ /**
133
+ * Package-level attribution the host is expected to display.
134
+ *
135
+ * Per-binding `attribution` on {@link HonuaMapPackageSourceBinding} stays the
136
+ * source-of-record for a single service; this collection is for the
137
+ * package-wide notices (basemap credit, licence text) that no single binding
138
+ * owns.
139
+ */
140
+ export interface HonuaMapPackageAttribution {
141
+ /** Attribution text. Plain text; hosts escape before rendering. */
142
+ text: string;
143
+ /** Optional link target for the attribution. */
144
+ url?: string;
145
+ /** Bindings this notice covers. Omitted means package-wide. */
146
+ sourceIds?: readonly string[];
147
+ /** Whether the host must display this notice (licence obligation). */
148
+ required?: boolean;
149
+ }
150
+ /**
151
+ * A renderer-neutral widget/component declared by the package.
152
+ *
153
+ * `type` is an open string rather than a closed union: the widget catalogue
154
+ * belongs to the host application, and closing it here would make every new
155
+ * component a breaking change to the artifact. Unknown types are carried
156
+ * through the round trip and ignored by hosts that cannot render them.
157
+ */
158
+ export interface HonuaMapPackageWidget {
159
+ widgetId: string;
160
+ /** Widget kind, e.g. `legend`, `layer-list`, `basemap-gallery`, `search`. */
161
+ type: string;
162
+ position?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
163
+ label?: string;
164
+ /** Whether the widget starts visible. Defaults to `true` when omitted. */
165
+ visible?: boolean;
166
+ /** Widget-specific configuration, carried through unmodified. */
167
+ config?: Record<string, unknown>;
168
+ }
169
+ /**
170
+ * An external capability the package needs in order to render. Declarative
171
+ * only — nothing in the SDK installs or resolves these; hosts use them to
172
+ * report a fidelity gap before rendering rather than after.
173
+ */
174
+ export interface HonuaMapPackageDependency {
175
+ /** Dependency name, e.g. `maplibre-gl`, `@honua/sdk-js`, `pmtiles`. */
176
+ name: string;
177
+ /** semver range the package was authored against. */
178
+ versionRange?: string;
179
+ kind?: "renderer" | "protocol" | "sdk" | "plugin" | "font" | "sprite" | "basemap";
180
+ /** Whether the package still renders (degraded) without it. */
181
+ optional?: boolean;
182
+ }
183
+ /**
184
+ * How this package was produced. Descriptive only.
185
+ *
186
+ * Deliberately carries no content hash, actor/tenant, authorization scope, or
187
+ * audit/correlation identifier. Those are identity and governance concerns
188
+ * owned by the canonical honua-server composition contract and projected into
189
+ * the SDK through #1397 / #1398; minting them here would fork the identity
190
+ * model, which is the failure mode #1426 exists to prevent.
191
+ */
192
+ export interface HonuaMapPackageProvenance {
193
+ /** Tool that produced the package, e.g. `honua-cli`, `@honua/mcp-server`. */
194
+ generatedBy?: string;
195
+ /** Version of that tool. */
196
+ generatorVersion?: string;
197
+ /** ISO-8601 timestamp of production. */
198
+ generatedAt?: string;
199
+ /** Ids of upstream artifacts this package was composed from. */
200
+ derivedFrom?: readonly string[];
201
+ /** Free-text note for humans reading the artifact. */
202
+ notes?: string;
203
+ }
132
204
  /**
133
205
  * v1 MapPackage shape — mirrors the draft server type in
134
206
  * `/home/makani/honua-server/src/Honua.Core/Features/Geoprocessing/Domain/MapPackage.cs`.
@@ -161,6 +233,14 @@ export interface HonuaMapPackage {
161
233
  popupBindings?: readonly HonuaMapPackagePopupBinding[];
162
234
  labelBindings?: readonly HonuaMapPackageLabelBinding[];
163
235
  boundArtifacts?: readonly string[];
236
+ /** Package-wide attribution notices. */
237
+ attribution?: readonly HonuaMapPackageAttribution[];
238
+ /** Renderer-neutral widgets/components declared by the package. */
239
+ widgets?: readonly HonuaMapPackageWidget[];
240
+ /** External capabilities required to render at full fidelity. */
241
+ dependencies?: readonly HonuaMapPackageDependency[];
242
+ /** How the package was produced. Descriptive; carries no identity. */
243
+ provenance?: HonuaMapPackageProvenance;
164
244
  /** Preserve additive fields through round-trip without forcing a type bump. */
165
245
  [extra: string]: unknown;
166
246
  }
@@ -1 +1 @@
1
- {"version":3,"file":"map-package.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"map-package.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * A documented, compatible subset of the Vega-Lite v5 spec used by Studio
2
+ * A documented, compatible subset of the Vega-Lite v6 spec used by Studio
3
3
  * dashboard and report charts. The acceptance criterion for cross-surface
4
4
  * parity is that "dashboard/report charts use Vega-Lite specs or an explicitly
5
5
  * documented compatible subset" — this module is that documented subset, plus
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import type { HonuaGeneratedAppChartWidget } from "../generated-app/manifest.js";
20
20
  /** Vega-Lite schema URL this subset targets. */
21
- export declare const HONUA_VEGA_LITE_SCHEMA_V5: "https://vega.github.io/schema/vega-lite/v5.json";
21
+ export declare const HONUA_VEGA_LITE_SCHEMA: "https://vega.github.io/schema/vega-lite/v6.json";
22
22
  /** Mark types in the supported subset. */
23
23
  export type HonuaChartMark = "bar" | "line" | "point" | "arc";
24
24
  /** Encoding field type in the supported subset. */
@@ -57,7 +57,7 @@ export interface HonuaChartEncoding {
57
57
  * @experimental
58
58
  */
59
59
  export interface HonuaVegaLiteChartSpec {
60
- readonly $schema: typeof HONUA_VEGA_LITE_SCHEMA_V5;
60
+ readonly $schema: typeof HONUA_VEGA_LITE_SCHEMA;
61
61
  readonly title?: string;
62
62
  readonly description?: string;
63
63
  readonly mark: HonuaChartMark | {
@@ -65,7 +65,7 @@ export interface HonuaVegaLiteChartSpec {
65
65
  readonly tooltip?: boolean;
66
66
  };
67
67
  readonly encoding: HonuaChartEncoding;
68
- readonly data?: {
68
+ readonly data: {
69
69
  readonly values?: ReadonlyArray<Record<string, unknown>>;
70
70
  readonly name?: string;
71
71
  };
@@ -75,8 +75,8 @@ export interface HonuaVegaLiteChartSpec {
75
75
  /**
76
76
  * Derive a {@link HonuaVegaLiteChartSpec} from a generated-app chart widget so
77
77
  * dashboard and report charts render identically across surfaces. `rows`, when
78
- * supplied, become inline `data.values`; otherwise the host binds a named
79
- * dataset. Returns `undefined` when the widget lacks the field needed for its
78
+ * supplied, become inline `data.values`; otherwise the host binds the named
79
+ * dataset identified by the widget id. Returns `undefined` when the widget lacks the field needed for its
80
80
  * chart kind (so a caller can degrade cleanly rather than emit a broken spec).
81
81
  *
82
82
  * @experimental
@@ -1 +1 @@
1
- {"version":3,"file":"chart-spec.d.ts","sourceRoot":"","sources":["../../../src/studio/chart-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAEjF,gDAAgD;AAChD,eAAO,MAAM,yBAAyB,EAAG,iDAA0D,CAAC;AAEpG,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE9D,mDAAmD;AACnD,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtF;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC;IACvC,QAAQ,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,yBAAyB,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,yBAAyB,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC9F,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;CACxC;AAYD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,4BAA4B,EACpC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC5C,sBAAsB,GAAG,SAAS,CAiDpC"}
1
+ {"version":3,"file":"chart-spec.d.ts","sourceRoot":"","sources":["../../../src/studio/chart-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAEjF,gDAAgD;AAChD,eAAO,MAAM,sBAAsB,EAAG,iDAA0D,CAAC;AAEjG,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE9D,mDAAmD;AACnD,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtF;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC;IACvC,QAAQ,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,yBAAyB,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,sBAAsB,CAAC;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC9F,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;CACxC;AAYD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,4BAA4B,EACpC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC5C,sBAAsB,GAAG,SAAS,CAiDpC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * A documented, compatible subset of the Vega-Lite v5 spec used by Studio
2
+ * A documented, compatible subset of the Vega-Lite v6 spec used by Studio
3
3
  * dashboard and report charts. The acceptance criterion for cross-surface
4
4
  * parity is that "dashboard/report charts use Vega-Lite specs or an explicitly
5
5
  * documented compatible subset" — this module is that documented subset, plus
@@ -17,7 +17,7 @@
17
17
  * @module
18
18
  */
19
19
  /** Vega-Lite schema URL this subset targets. */
20
- export const HONUA_VEGA_LITE_SCHEMA_V5 = "https://vega.github.io/schema/vega-lite/v5.json";
20
+ export const HONUA_VEGA_LITE_SCHEMA = "https://vega.github.io/schema/vega-lite/v6.json";
21
21
  /**
22
22
  * Map a generated-app chart widget kind to a Vega-Lite mark and the encoding
23
23
  * shape the subset expects.
@@ -30,8 +30,8 @@ const CHART_KIND_MARK = {
30
30
  /**
31
31
  * Derive a {@link HonuaVegaLiteChartSpec} from a generated-app chart widget so
32
32
  * dashboard and report charts render identically across surfaces. `rows`, when
33
- * supplied, become inline `data.values`; otherwise the host binds a named
34
- * dataset. Returns `undefined` when the widget lacks the field needed for its
33
+ * supplied, become inline `data.values`; otherwise the host binds the named
34
+ * dataset identified by the widget id. Returns `undefined` when the widget lacks the field needed for its
35
35
  * chart kind (so a caller can degrade cleanly rather than emit a broken spec).
36
36
  *
37
37
  * @experimental
@@ -81,12 +81,12 @@ export function chartWidgetToVegaLiteSpec(widget, rows) {
81
81
  };
82
82
  }
83
83
  return {
84
- $schema: HONUA_VEGA_LITE_SCHEMA_V5,
84
+ $schema: HONUA_VEGA_LITE_SCHEMA,
85
85
  ...(widget.title ? { title: widget.title } : {}),
86
86
  mark: { type: mark, tooltip: true },
87
87
  encoding,
88
88
  width: "container",
89
- ...(rows ? { data: { values: rows } } : {}),
89
+ data: rows ? { values: rows } : { name: widget.id },
90
90
  };
91
91
  }
92
92
  function metricToAggregate(metric) {
package/studio/index.d.ts CHANGED
@@ -17,9 +17,18 @@
17
17
  * (`/api/v{version}/studio`): package-family discovery, draft CRUD with
18
18
  * optimistic-generation checking, validate, preview-plan, immutable content
19
19
  * versions and comparisons, publish requests, reopen, and rollback requests.
20
- * See that module's doc comment for the documented enumeration-endpoint gap
21
- * (`honua-server#3003`) and how the client absorbs it without a breaking
22
- * change.
20
+ * It also enumerates: `contentItems.list()` and `drafts.list()` page the
21
+ * `honua-server#3003` content-browser endpoints with filters, opaque keyset
22
+ * cursors, and a joined publication-registry lifecycle badge per content-item
23
+ * row — plus bounded `listAll()`/`collect()` cursor walks. See that module's
24
+ * doc comment.
25
+ *
26
+ * Publication proposals are submitted, read and polled to a final state
27
+ * through `publicationRequests` — `create`, `get` and a bounded, cancellable
28
+ * `poll` that returns a final publication URL only at `Active`. This surface
29
+ * carries **no** approve/authorize/override capability by design: approval is
30
+ * a separate principal acting through the canonical Admin API/CLI. See
31
+ * `./publication-status.js` for the state machine.
23
32
  *
24
33
  * @experimental This entrypoint is not yet covered by the SDK's semver contract
25
34
  * — the surface may change in any minor release prior to `1.0.0`, and the
@@ -34,7 +43,7 @@ export { validatePackageProvenance, validateStudioPackage } from "./validate.js"
34
43
  export type { ValidateStudioPackageOptions } from "./validate.js";
35
44
  export { HONUA_PACKAGE_PROVENANCE_FORMAT_V1, getPackageProvenance } from "./provenance.js";
36
45
  export type { HonuaPackageOrigin, HonuaPackagePermission, HonuaPackageProvenance, HonuaPackageProvenanceFormat, HonuaPlanProvenance, HonuaPlanStep, HonuaPromptProvenance, HonuaProvenanceDataBinding, } from "./provenance.js";
37
- export { HONUA_VEGA_LITE_SCHEMA_V5, chartWidgetToVegaLiteSpec } from "./chart-spec.js";
46
+ export { HONUA_VEGA_LITE_SCHEMA, chartWidgetToVegaLiteSpec } from "./chart-spec.js";
38
47
  export type { HonuaChartEncoding, HonuaChartEncodingChannel, HonuaChartFieldType, HonuaChartMark, HonuaVegaLiteChartSpec, } from "./chart-spec.js";
39
48
  export { getCapability, getCapabilityReasonCode, hasCapability, hasPackageFamily, isCapabilitySupported, } from "./capability-manifest.js";
40
49
  export type { StudioCapabilityAnalysisLimits, StudioCapabilityAttachmentLimits, StudioCapabilityEditLimits, StudioCapabilityEntitlementDecision, StudioCapabilityEntry, StudioCapabilityEnvironment, StudioCapabilityGeometryLimits, StudioCapabilityJobLimits, StudioCapabilityLimits, StudioCapabilityLink, StudioCapabilityManifest, StudioCapabilityPackageFamily, StudioCapabilityPackages, StudioCapabilityPolicies, StudioCapabilityPreviewLimits, StudioCapabilityPublicationLimits, StudioCapabilityQueryLimits, StudioCapabilityScope, StudioCapabilityServerInfo, StudioCapabilityStreamingLimits, StudioCapabilityTransports, StudioCapabilityTransportState, StudioCapabilityUploadLimits, } from "./capability-manifest.js";
@@ -45,7 +54,8 @@ export { HONUA_GENERATED_APP_MANIFEST_FORMAT_V1 } from "../generated-app/manifes
45
54
  export type { HonuaGeneratedAppManifest, HonuaGeneratedAppPackage } from "../generated-app/manifest.js";
46
55
  export { HONUA_STUDIO_PROBLEM_TYPE, HonuaStudioError, classifyStudioProblemStatus, isHonuaStudioError, isHonuaStudioGenerationConflict, } from "./lifecycle-errors.js";
47
56
  export type { HonuaStudioProblemDetails, HonuaStudioProblemKind } from "./lifecycle-errors.js";
48
- export type { StudioApiResponse, StudioBindingRef, StudioContentItemPointers, StudioContentVersion, StudioContentVersionListResponse, StudioDependencyRef, StudioPackageDraft, StudioPackageDraftCreateRequest, StudioPackageDraftReplaceRequest, StudioPackageEnvelope, StudioPackageFamilyCapabilities, StudioPackageFamilyCapability, StudioPackageFamilyOperation, StudioPackageFamilySupportLevel, StudioPersistenceMode, StudioPreviewPlan, StudioProvenanceRef, StudioPublicationIntent, StudioPublicationRequest, StudioPublicationRequestInput, StudioPublicationRequestStatus, StudioReopenVersionRequest, StudioRollbackPointer, StudioRollbackRequest, StudioRollbackRequestInput, StudioValidationDepth, StudioValidationStatus, StudioValidationSummary, StudioVersionComparison, StudioVersionComparisonDiff, StudioVersionComparisonRequest, } from "./lifecycle-types.js";
49
- export { HONUA_STUDIO_LIFECYCLE_BASE_PATH, HonuaStudioContentVersionsClient, HonuaStudioDraftsClient, HonuaStudioLifecycleClient, HonuaStudioPackageFamiliesClient, HonuaStudioPublicationRequestsClient, HonuaStudioRollbackRequestsClient, createHonuaStudioLifecycleClient, } from "./lifecycle-client.js";
50
- export type { HonuaStudioLifecycleClientOptions, HonuaStudioRawRequest, HonuaStudioRequestOptions, } from "./lifecycle-client.js";
57
+ export { STUDIO_PUBLICATION_LIFECYCLE_STATES, isStudioPublicationActive, isStudioPublicationTerminal, normalizeStudioPublicationStatus, studioPublicationUrl, } from "./publication-status.js";
58
+ export type { StudioApiResponse, StudioBindingRef, StudioContentItemListOptions, StudioContentItemListResponse, StudioContentItemListRow, StudioContentItemPointers, StudioContentItemPublicationBadge, StudioContentItemState, StudioContentVersion, StudioContentVersionListResponse, StudioDependencyRef, StudioListFilterOptions, StudioListPage, StudioPackageDraft, StudioPackageDraftCreateRequest, StudioPackageDraftListOptions, StudioPackageDraftListResponse, StudioPackageDraftReplaceRequest, StudioPackageEnvelope, StudioPackageFamilyCapabilities, StudioPackageFamilyCapability, StudioPackageFamilyOperation, StudioPackageFamilySupportLevel, StudioPersistenceMode, StudioPreviewPlan, StudioProvenanceRef, StudioPublicationIdentifiers, StudioPublicationIntent, StudioPublicationLifecycleState, StudioPublicationRequest, StudioPublicationRequestInput, StudioPublicationRequestStatus, StudioPublicationRouteLifecycle, StudioReopenVersionRequest, StudioRollbackPointer, StudioRollbackRequest, StudioRollbackRequestInput, StudioValidationDepth, StudioValidationStatus, StudioValidationSummary, StudioVersionComparison, StudioVersionComparisonDiff, StudioVersionComparisonRequest, } from "./lifecycle-types.js";
59
+ export { HONUA_STUDIO_LIFECYCLE_BASE_PATH, HONUA_STUDIO_LIST_DEFAULT_LIMIT, HONUA_STUDIO_LIST_MAX_LIMIT, HONUA_STUDIO_LIST_MAX_PAGES, HONUA_STUDIO_PUBLICATION_POLL_INTERVAL_MS, HONUA_STUDIO_PUBLICATION_POLL_MAX_ATTEMPTS, HonuaStudioContentItemsClient, HonuaStudioContentVersionsClient, HonuaStudioDraftsClient, HonuaStudioLifecycleClient, HonuaStudioPackageFamiliesClient, HonuaStudioPublicationRequestsClient, HonuaStudioRollbackRequestsClient, createHonuaStudioLifecycleClient, isStudioListExhausted, } from "./lifecycle-client.js";
60
+ export type { HonuaStudioLifecycleClientOptions, HonuaStudioPaginationOptions, HonuaStudioPublicationPollOptions, HonuaStudioRawRequest, HonuaStudioRequestOptions, StudioListCollection, StudioPublicationPollOutcome, } from "./lifecycle-client.js";
51
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/studio/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/studio/index.ts"],"names":[],"mappings":"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"}
package/studio/index.js CHANGED
@@ -17,9 +17,18 @@
17
17
  * (`/api/v{version}/studio`): package-family discovery, draft CRUD with
18
18
  * optimistic-generation checking, validate, preview-plan, immutable content
19
19
  * versions and comparisons, publish requests, reopen, and rollback requests.
20
- * See that module's doc comment for the documented enumeration-endpoint gap
21
- * (`honua-server#3003`) and how the client absorbs it without a breaking
22
- * change.
20
+ * It also enumerates: `contentItems.list()` and `drafts.list()` page the
21
+ * `honua-server#3003` content-browser endpoints with filters, opaque keyset
22
+ * cursors, and a joined publication-registry lifecycle badge per content-item
23
+ * row — plus bounded `listAll()`/`collect()` cursor walks. See that module's
24
+ * doc comment.
25
+ *
26
+ * Publication proposals are submitted, read and polled to a final state
27
+ * through `publicationRequests` — `create`, `get` and a bounded, cancellable
28
+ * `poll` that returns a final publication URL only at `Active`. This surface
29
+ * carries **no** approve/authorize/override capability by design: approval is
30
+ * a separate principal acting through the canonical Admin API/CLI. See
31
+ * `./publication-status.js` for the state machine.
23
32
  *
24
33
  * @experimental This entrypoint is not yet covered by the SDK's semver contract
25
34
  * — the surface may change in any minor release prior to `1.0.0`, and the
@@ -30,7 +39,7 @@ export { HONUA_ANALYSIS_PACKAGE_FORMAT_V1, HONUA_ETL_PACKAGE_FORMAT_V1, HONUA_FO
30
39
  export { fromMapPackageValidation, toStudioValidationResponse } from "./validation.js";
31
40
  export { validatePackageProvenance, validateStudioPackage } from "./validate.js";
32
41
  export { HONUA_PACKAGE_PROVENANCE_FORMAT_V1, getPackageProvenance } from "./provenance.js";
33
- export { HONUA_VEGA_LITE_SCHEMA_V5, chartWidgetToVegaLiteSpec } from "./chart-spec.js";
42
+ export { HONUA_VEGA_LITE_SCHEMA, chartWidgetToVegaLiteSpec } from "./chart-spec.js";
34
43
  export { getCapability, getCapabilityReasonCode, hasCapability, hasPackageFamily, isCapabilitySupported, } from "./capability-manifest.js";
35
44
  // Re-exported established families so `@honua/sdk-js/studio` is the single
36
45
  // import path for every Studio package projection. These leaf modules carry
@@ -38,4 +47,5 @@ export { getCapability, getCapabilityReasonCode, hasCapability, hasPackageFamily
38
47
  export { HONUA_MAP_PACKAGE_FORMAT_V1 } from "../runtime/map-package.js";
39
48
  export { HONUA_GENERATED_APP_MANIFEST_FORMAT_V1 } from "../generated-app/manifest.js";
40
49
  export { HONUA_STUDIO_PROBLEM_TYPE, HonuaStudioError, classifyStudioProblemStatus, isHonuaStudioError, isHonuaStudioGenerationConflict, } from "./lifecycle-errors.js";
41
- export { HONUA_STUDIO_LIFECYCLE_BASE_PATH, HonuaStudioContentVersionsClient, HonuaStudioDraftsClient, HonuaStudioLifecycleClient, HonuaStudioPackageFamiliesClient, HonuaStudioPublicationRequestsClient, HonuaStudioRollbackRequestsClient, createHonuaStudioLifecycleClient, } from "./lifecycle-client.js";
50
+ export { STUDIO_PUBLICATION_LIFECYCLE_STATES, isStudioPublicationActive, isStudioPublicationTerminal, normalizeStudioPublicationStatus, studioPublicationUrl, } from "./publication-status.js";
51
+ export { HONUA_STUDIO_LIFECYCLE_BASE_PATH, HONUA_STUDIO_LIST_DEFAULT_LIMIT, HONUA_STUDIO_LIST_MAX_LIMIT, HONUA_STUDIO_LIST_MAX_PAGES, HONUA_STUDIO_PUBLICATION_POLL_INTERVAL_MS, HONUA_STUDIO_PUBLICATION_POLL_MAX_ATTEMPTS, HonuaStudioContentItemsClient, HonuaStudioContentVersionsClient, HonuaStudioDraftsClient, HonuaStudioLifecycleClient, HonuaStudioPackageFamiliesClient, HonuaStudioPublicationRequestsClient, HonuaStudioRollbackRequestsClient, createHonuaStudioLifecycleClient, isStudioListExhausted, } from "./lifecycle-client.js";