@hanamesh/dsh-app-host 0.2.0-rc.2 → 0.6.14

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 (120) hide show
  1. package/LICENSE +4 -7
  2. package/README.md +140 -13
  3. package/consistency.json +41 -6
  4. package/dist/catalog/fixtures/consumer.json +35 -0
  5. package/dist/catalog/fixtures/provider.json +107 -0
  6. package/dist/catalog/suite.d.ts +4 -0
  7. package/dist/catalog/suite.js +50 -0
  8. package/dist/client-ui.d.ts +21 -3
  9. package/dist/client-ui.js +961 -94
  10. package/dist/client.js +2 -2
  11. package/dist/control-origin.js +9 -0
  12. package/dist/descriptor.js +6 -0
  13. package/dist/dsh-compat.js +6 -0
  14. package/dist/dsh.d.ts +21 -4
  15. package/dist/dsh.js +149 -58
  16. package/dist/gateway.js +140 -11
  17. package/dist/git-process.js +64 -0
  18. package/dist/git-worker.js +50 -0
  19. package/dist/index.d.ts +9 -7
  20. package/dist/install-target/fixtures/catalog.json +58 -0
  21. package/dist/install-target/fixtures/consumer-cases.json +148 -0
  22. package/dist/install-target/fixtures/install-failure-cases.json +58 -0
  23. package/dist/install-target/fixtures/provider-cases.json +618 -0
  24. package/dist/install-target/fixtures/reference-consumer.js +37 -0
  25. package/dist/install-target/fixtures/source-profile.js +123 -0
  26. package/dist/install-target/harness.js +43 -0
  27. package/dist/install-target/run.js +28 -0
  28. package/dist/install-target/suite.d.ts +19 -0
  29. package/dist/install-target/suite.js +328 -0
  30. package/dist/installation-status.d.ts +21 -0
  31. package/dist/installation-status.js +2 -0
  32. package/dist/library/catalog.js +163 -19
  33. package/dist/library/client-identity.js +31 -0
  34. package/dist/library/desktop-cli.js +7 -0
  35. package/dist/library/domain.js +3 -1
  36. package/dist/library/handoff.js +246 -0
  37. package/dist/library/install.js +138 -32
  38. package/dist/library/installation-cli.js +48 -0
  39. package/dist/library/installation-command-worker.js +27 -0
  40. package/dist/library/installation-status-http.js +26 -0
  41. package/dist/library/installation-status.js +91 -0
  42. package/dist/library/installation-worker.js +44 -0
  43. package/dist/library/locate.js +70 -9
  44. package/dist/library/node-binding.js +11 -0
  45. package/dist/library/recovery.js +66 -0
  46. package/dist/library/routes.js +90 -14
  47. package/dist/library/service.js +123 -27
  48. package/dist/library/suite.js +130 -0
  49. package/dist/manager.js +24 -8
  50. package/dist/node-runtime/domain.js +6 -0
  51. package/dist/node-runtime/releases.json +59 -0
  52. package/dist/node-runtime/service.js +101 -0
  53. package/dist/owned-probe-diagnostic.js +53 -0
  54. package/dist/router/receipts.js +8 -11
  55. package/dist/router/routes.js +7 -7
  56. package/dist/routes.js +9 -8
  57. package/dist/runtime.js +11 -1
  58. package/dist/usage-evidence.js +18 -86
  59. package/dist/workspace-origin.js +17 -0
  60. package/docs/APP_PACKAGE.md +4 -0
  61. package/docs/CONTRACT.md +75 -11
  62. package/docs/DSH_COMPATIBILITY.md +94 -0
  63. package/docs/DSH_INTEGRATION.md +41 -0
  64. package/docs/INSTALLATION_STATUS.md +96 -0
  65. package/docs/INSTALL_TARGET.md +130 -0
  66. package/docs/LIBRARY.md +44 -3
  67. package/docs/LICENSES.json +189 -61
  68. package/docs/PROVENANCE.json +53 -12
  69. package/docs/SECURITY.md +31 -0
  70. package/node_modules/@hanamesh/lib-provision/LICENSE +15 -0
  71. package/node_modules/@hanamesh/lib-provision/README.md +134 -0
  72. package/node_modules/@hanamesh/lib-provision/THIRD_PARTY_NOTICES.md +17 -0
  73. package/node_modules/@hanamesh/lib-provision/bin/hanamesh-provision.js +13 -0
  74. package/node_modules/@hanamesh/lib-provision/consistency.json +20 -0
  75. package/node_modules/@hanamesh/lib-provision/contract/CHANGELOG.md +5 -0
  76. package/node_modules/@hanamesh/lib-provision/contract/conformance.mjs +80 -0
  77. package/node_modules/@hanamesh/lib-provision/contract/fixtures/consumer.json +9 -0
  78. package/node_modules/@hanamesh/lib-provision/contract/fixtures/provider.json +11 -0
  79. package/node_modules/@hanamesh/lib-provision/contract/lib-provision.schema.json +47 -0
  80. package/node_modules/@hanamesh/lib-provision/package.json +50 -0
  81. package/package.json +81 -33
  82. package/schemas/catalog-provider-page.schema.json +884 -7
  83. package/schemas/catalog-source.schema.json +9 -7
  84. package/schemas/install-target.schema.json +298 -0
  85. package/dist/provision/LICENSE +0 -6
  86. package/dist/provision/THIRD_PARTY_NOTICES.md +0 -13
  87. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/archive.d.ts +0 -0
  88. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/archive.js +0 -0
  89. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/check.d.ts +0 -0
  90. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/check.js +0 -0
  91. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/checkpoints.d.ts +0 -0
  92. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/checkpoints.js +0 -0
  93. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/cli.d.ts +0 -0
  94. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/cli.js +0 -0
  95. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/download.d.ts +0 -0
  96. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/download.js +0 -0
  97. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/errors.d.ts +0 -0
  98. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/errors.js +0 -0
  99. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/extract.d.ts +0 -0
  100. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/extract.js +0 -0
  101. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/fsutil.d.ts +0 -0
  102. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/fsutil.js +0 -0
  103. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/index.d.ts +0 -0
  104. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/index.js +0 -0
  105. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/ledger.d.ts +0 -0
  106. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/ledger.js +0 -0
  107. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/manifest.d.ts +0 -0
  108. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/manifest.js +0 -0
  109. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/paths.d.ts +0 -0
  110. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/paths.js +0 -0
  111. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/platform.d.ts +0 -0
  112. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/platform.js +0 -0
  113. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/provision.d.ts +0 -0
  114. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/provision.js +0 -0
  115. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/tar.d.ts +0 -0
  116. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/tar.js +0 -0
  117. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/types.d.ts +0 -0
  118. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/types.js +0 -0
  119. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/zip.d.ts +0 -0
  120. /package/{dist/provision → node_modules/@hanamesh/lib-provision/lib}/zip.js +0 -0
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "urn:dsh-community-market:schema:catalog-source:1.0.0",
3
+ "$id": "urn:dsh-community-market:schema:catalog-source:1.1.0",
4
4
  "title": "DSH Community Market catalog source manifest",
5
- "description": "A provider-neutral declaration for one user-selectable HTTPS JSON catalog endpoint. A user registers its manifest URL; selection and all other user-owned state stay local. The smallest recommended profile supports q, category, cursor, and limit and uses 50 as an example page size, not a global cap.",
5
+ "description": "A provider-neutral declaration for one user-selectable JSON catalog endpoint (standard-port HTTPS or loopback HTTP on 127.0.0.1, ::1 or localhost). A user registers its manifest URL; selection and all other user-owned state stay local. The smallest recommended profile supports q, category, cursor, and limit and uses 50 as an example page size, not a global cap.",
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
8
  "required": [
@@ -15,7 +15,9 @@
15
15
  ],
16
16
  "properties": {
17
17
  "manifestVersion": {
18
- "const": "1.0.0"
18
+ "type": "string",
19
+ "pattern": "^1\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$(?![\\s\\S])",
20
+ "description": "Valid SemVer with major 1. Minor and patch additions preserve the validated shape; other majors are refused."
19
21
  },
20
22
  "providerId": {
21
23
  "type": "string",
@@ -39,7 +41,7 @@
39
41
  "type": "string",
40
42
  "format": "uri",
41
43
  "maxLength": 2048,
42
- "pattern": "^https://(?![^/?#]*@)(?![^/?#]*:)[^#]+$"
44
+ "pattern": "^(?:https://(?![^/?#]*@)(?![^/?#]*:)[^/?#\\s]+|http://(?:127\\.0\\.0\\.1|\\[::1\\]|localhost)(?::[0-9]+)?)(?:/[^#]*)?$"
43
45
  },
44
46
  "attribution": {
45
47
  "type": "object",
@@ -59,7 +61,7 @@
59
61
  "type": "string",
60
62
  "format": "uri",
61
63
  "maxLength": 2048,
62
- "pattern": "^https://(?![^/?#]*@)(?![^/?#]*:)[^#]+$"
64
+ "pattern": "^(?:https://(?![^/?#]*@)(?![^/?#]*:)[^/?#\\s]+|http://(?:127\\.0\\.0\\.1|\\[::1\\]|localhost)(?::[0-9]+)?)(?:/[^#]*)?$"
63
65
  },
64
66
  "notice": {
65
67
  "type": "string",
@@ -84,8 +86,8 @@
84
86
  "type": "string",
85
87
  "format": "uri",
86
88
  "maxLength": 2048,
87
- "pattern": "^https://(?![^/?#]*@)(?![^/?#]*:)[^/?#\\s]+(?:/[^?#\\s]*)?/v1/plugins$",
88
- "description": "Absolute HTTPS endpoint on standard port 443 with no query or fragment. It must share the user-approved manifest origin, and the standard endpoint path ends in /v1/plugins."
89
+ "pattern": "^(?:https://(?![^/?#]*@)(?![^/?#]*:)[^/?#\\s]+|http://(?:127\\.0\\.0\\.1|\\[::1\\]|localhost)(?::[0-9]+)?)(?:/[^?#\\s]*)?/v1/plugins$",
90
+ "description": "Standard-port HTTPS, or HTTP on 127.0.0.1, ::1 or localhost at any port, without credentials, query or fragment. Endpoint must share the exact user-approved manifest origin and end in /v1/plugins. URL parsing and port validity are enforced by the consumer."
89
91
  },
90
92
  "method": {
91
93
  "const": "GET"
@@ -0,0 +1,298 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://hanamesh.com/schemas/app-host/install-target.schema.json",
4
+ "title": "HanaMesh AppHost install target",
5
+ "description": "Public identifiers a caller may hand to the AppHost market. The market resolves its own catalog, shows its own confirmation and performs the install; callers never supply versions, download locations or confirmation. Lengths are JavaScript string lengths.",
6
+ "x-hanamesh-contract": {
7
+ "name": "hanamesh.install-target",
8
+ "version": "1",
9
+ "supported": ["1"],
10
+ "package": "@hanamesh/dsh-app-host",
11
+ "since": "0.2.0-rc.8",
12
+ "fragmentPrefix": "#hanamesh-install?",
13
+ "routes": {
14
+ "resolve": "GET /hanamesh/library/target",
15
+ "install": "POST /hanamesh/library/install"
16
+ },
17
+ "loopback": {
18
+ "since": "0.2.0-rc.9",
19
+ "scope": "library HTTP routes and install-target navigation",
20
+ "aliases": [
21
+ "127.0.0.1",
22
+ "localhost"
23
+ ],
24
+ "sameInstanceSamePort": true,
25
+ "host": "Only exact alias:<configured parentOrigin port> Host headers are accepted; no extra Host, port or spelling. The configured parentOrigin remains the canonical 127.0.0.1 origin.",
26
+ "origin": "When supplied, Origin must exactly match the request Host with the configured http scheme. The aliases are separate browser origins: cross-alias, cross-port, foreign and opaque origins are refused.",
27
+ "install": "POST still requires exact request Origin, X-HanaMesh-Client: workspace-v1, non-iframe, host authentication and authorization; only explicit market confirmation installs.",
28
+ "authentication": "Each alias uses its own normal DSH authentication; no cookie/token copying or authentication bypass."
29
+ },
30
+ "clientEntry": "openInstallTarget",
31
+ "versionField": "contractVersion",
32
+ "unversioned": "An input without contractVersion keeps the v1 semantics shipped in 0.2.0-rc.7.",
33
+ "mismatch": "Any contractVersion other than a supported value is refused with CONTRACT_VERSION_UNSUPPORTED (HTTP 400, details.supported) before other field checks; nothing is resolved or installed.",
34
+ "installRecovery": {
35
+ "since": "0.2.0-rc.10",
36
+ "scope": "Result of a failed install started by POST /hanamesh/library/install (and plugins/install): the library.install-failed event of GET /hanamesh/library/events carries the original error code and a recovery object.",
37
+ "transaction": "baseline (profile spec, bundle selection, lockfile, resolved module; runtime ledger before provision) → official dsh plugin add --save-exact → profile readback → application definition → runtime provision. One profile writer at a time in this host; dsh plugin locks per command.",
38
+ "compensation": "New install: dsh plugin remove (or dsh plugin install when only residue remains); runtime items newly claimed by this operation are removed by lib-provision ownership, unowned files and dataRoot are never deleted. Upgrade: dsh plugin add of the original spec (--save-exact when exact); a replaced runtime item is provisioned again from the restored definition. Concurrent writes by other profile writers are never undone. No automatic retry; no manual profile/store/metadata edit.",
39
+ "readback": "restored and not-needed are reported only when every check row equals the baseline. Anything else is failed with residue rows, the recovery error (if the compensation itself failed) and originals: the pre-operation package.json/pnpm-lock.yaml/runtime ledger kept under <dataRoot>/library-recovery/<operationId>/.",
40
+ "presentation": "A failed install is never presented as installed. failed is never presented as restored or rolled back. An event without recovery (provider before rc.10) is not presented as restored."
41
+ }
42
+ },
43
+ "$ref": "#/$defs/target",
44
+ "$defs": {
45
+ "itemId": {
46
+ "type": "string",
47
+ "minLength": 1,
48
+ "maxLength": 160,
49
+ "pattern": "^[^\\u0000-\\u001f\\u007f]+$"
50
+ },
51
+ "packageName": {
52
+ "type": "string",
53
+ "minLength": 1,
54
+ "maxLength": 214,
55
+ "pattern": "^(?:@[a-z0-9][a-z0-9._-]*\\/)?[a-z0-9][a-z0-9._-]*$"
56
+ },
57
+ "contractVersion": {
58
+ "description": "Optional declaration of the contract version the caller speaks.",
59
+ "type": "string",
60
+ "enum": ["1"]
61
+ },
62
+ "target": {
63
+ "description": "openInstallTarget input, GET /hanamesh/library/target query and #hanamesh-install? fragment fields. At least one identifier; both must name the same catalog item. Every other field is refused.",
64
+ "type": "object",
65
+ "properties": {
66
+ "itemId": { "$ref": "#/$defs/itemId" },
67
+ "packageName": { "$ref": "#/$defs/packageName" },
68
+ "contractVersion": { "$ref": "#/$defs/contractVersion" }
69
+ },
70
+ "additionalProperties": false,
71
+ "anyOf": [
72
+ { "required": ["itemId"] },
73
+ { "required": ["packageName"] }
74
+ ]
75
+ },
76
+ "receipt": {
77
+ "description": "openInstallTarget resolution receipt; not an install result.",
78
+ "type": "object",
79
+ "properties": {
80
+ "status": { "type": "string", "enum": ["confirmation-required", "installing", "already-installed", "superseded"] },
81
+ "itemId": { "type": "string" },
82
+ "packageName": { "type": "string" }
83
+ },
84
+ "required": ["status"],
85
+ "additionalProperties": false
86
+ },
87
+ "resolution": {
88
+ "description": "GET /hanamesh/library/target 200 body. contractVersion is the provider's declaration (added in 0.2.0-rc.8).",
89
+ "type": "object",
90
+ "properties": {
91
+ "contractVersion": { "type": "string", "enum": ["1"] },
92
+ "item": {
93
+ "type": "object",
94
+ "properties": {
95
+ "id": { "$ref": "#/$defs/itemId" },
96
+ "displayName": { "type": "string" },
97
+ "latestVersion": { "type": "string" },
98
+ "kind": { "type": "string", "enum": ["application", "plugin", "listing"] },
99
+ "upgradeAvailable": { "type": "boolean" },
100
+ "package": {
101
+ "type": "object",
102
+ "properties": {
103
+ "registry": { "type": "string", "const": "npm" },
104
+ "name": { "$ref": "#/$defs/packageName" }
105
+ },
106
+ "required": ["registry", "name"]
107
+ }
108
+ },
109
+ "required": ["id", "kind", "package", "upgradeAvailable"]
110
+ },
111
+ "source": {
112
+ "type": "object",
113
+ "properties": { "kind": { "type": "string" } },
114
+ "required": ["kind"]
115
+ },
116
+ "traceId": { "type": "string" }
117
+ },
118
+ "required": ["contractVersion", "item", "source", "traceId"]
119
+ },
120
+ "error": {
121
+ "description": "Refusal body of the HTTP routes; the client rejects with the same code.",
122
+ "type": "object",
123
+ "properties": {
124
+ "error": {
125
+ "type": "object",
126
+ "properties": {
127
+ "code": {
128
+ "type": "string",
129
+ "enum": ["INVALID_INPUT", "CONTRACT_VERSION_UNSUPPORTED", "CATALOG_ITEM_MISSING", "NOT_INSTALLABLE", "PACKAGE_DENIED", "HOST_DENIED", "ORIGIN_DENIED", "FRAME_CONTROL_DENIED", "CSRF_DENIED", "UNAUTHENTICATED", "FORBIDDEN", "METHOD_NOT_ALLOWED", "LIBRARY_INSTALL_UNAVAILABLE"]
130
+ },
131
+ "message": { "type": "string" }
132
+ },
133
+ "required": ["code"]
134
+ },
135
+ "traceId": { "type": "string" }
136
+ },
137
+ "required": ["error"]
138
+ },
139
+ "providerDeclaration": {
140
+ "description": "package.json hanamesh.installTarget of a provider package.",
141
+ "type": "object",
142
+ "properties": {
143
+ "contract": { "type": "string", "const": "hanamesh.install-target" },
144
+ "contractVersion": { "type": "string" },
145
+ "supported": { "type": "array", "items": { "type": "string" } },
146
+ "schema": { "type": "string" }
147
+ },
148
+ "required": ["contract", "contractVersion", "supported"]
149
+ },
150
+ "recovery": {
151
+ "description": "library.install-failed recovery result (added in 0.2.0-rc.10).",
152
+ "type": "object",
153
+ "properties": {
154
+ "status": {
155
+ "type": "string",
156
+ "enum": [
157
+ "not-needed",
158
+ "restored",
159
+ "failed"
160
+ ]
161
+ },
162
+ "mode": {
163
+ "type": "string",
164
+ "enum": [
165
+ "new-install",
166
+ "upgrade",
167
+ "unknown"
168
+ ]
169
+ },
170
+ "stage": {
171
+ "type": "string",
172
+ "enum": [
173
+ "baseline",
174
+ "before-add",
175
+ "add",
176
+ "readback",
177
+ "definition",
178
+ "provision"
179
+ ]
180
+ },
181
+ "previousVersion": {
182
+ "type": [
183
+ "string",
184
+ "null"
185
+ ]
186
+ },
187
+ "actions": {
188
+ "type": "array",
189
+ "items": {
190
+ "type": "string"
191
+ }
192
+ },
193
+ "checks": {
194
+ "type": "array",
195
+ "items": {
196
+ "type": "object",
197
+ "properties": {
198
+ "item": {
199
+ "type": "string"
200
+ },
201
+ "ok": {
202
+ "type": "boolean"
203
+ },
204
+ "reason": {
205
+ "type": "string"
206
+ }
207
+ },
208
+ "required": [
209
+ "item",
210
+ "ok"
211
+ ]
212
+ }
213
+ },
214
+ "residue": {
215
+ "type": "array",
216
+ "items": {
217
+ "type": "object",
218
+ "properties": {
219
+ "item": {
220
+ "type": "string"
221
+ },
222
+ "reason": {
223
+ "type": "string"
224
+ }
225
+ },
226
+ "required": [
227
+ "item",
228
+ "reason"
229
+ ]
230
+ }
231
+ },
232
+ "error": {
233
+ "type": "object",
234
+ "properties": {
235
+ "code": {
236
+ "type": "string"
237
+ },
238
+ "message": {
239
+ "type": "string"
240
+ }
241
+ },
242
+ "required": [
243
+ "code"
244
+ ]
245
+ },
246
+ "originals": {
247
+ "type": "object",
248
+ "properties": {
249
+ "dir": {
250
+ "type": "string"
251
+ },
252
+ "files": {
253
+ "type": "array",
254
+ "items": {
255
+ "type": "string"
256
+ }
257
+ },
258
+ "error": {
259
+ "type": "object"
260
+ }
261
+ }
262
+ }
263
+ },
264
+ "required": [
265
+ "status",
266
+ "mode",
267
+ "stage",
268
+ "previousVersion",
269
+ "actions",
270
+ "checks",
271
+ "residue"
272
+ ]
273
+ },
274
+ "installFailed": {
275
+ "description": "library.install-failed event of GET /hanamesh/library/events for an install operation. code is always the original failure; recovery added in 0.2.0-rc.10.",
276
+ "type": "object",
277
+ "properties": {
278
+ "type": {
279
+ "type": "string",
280
+ "const": "library.install-failed"
281
+ },
282
+ "operationId": {
283
+ "type": "string"
284
+ },
285
+ "code": {
286
+ "type": "string"
287
+ },
288
+ "recovery": {
289
+ "$ref": "#/$defs/recovery"
290
+ }
291
+ },
292
+ "required": [
293
+ "type",
294
+ "code"
295
+ ]
296
+ }
297
+ }
298
+ }
@@ -1,6 +0,0 @@
1
- @hanamesh/lib-provision@0.1.0-rc.1
2
- Copyright (c) 2026 HanaMesh. All rights reserved.
3
- License identifier in the source package: UNLICENSED.
4
- The copyright owner has confirmed distribution of this inlined component
5
- within @hanamesh/dsh-app-host. No MIT or other open-source license is
6
- granted for this component by this notice.
@@ -1,13 +0,0 @@
1
- # 第三方声明
2
-
3
- `@hanamesh/lib-provision` 0.1.0-rc.1 **没有运行时依赖**。tar / zip 读取、CRC32、sha256、HTTP 下载全部基于 Node.js 内置模块(`zlib`、`crypto`、`fs`、`fetch`)。
4
-
5
- 开发依赖(不随包分发):
6
-
7
- | 包 | 版本 | 许可证 | 用途 |
8
- |---|---|---|---|
9
- | typescript | 5.9.3 | Apache-2.0 | 构建 `lib/` 与 `.d.ts` |
10
- | @types/node | 22.19.7 | MIT | 类型声明 |
11
- | undici-types | 6.21.0 | MIT | `@types/node` 的锁定传递依赖 |
12
-
13
- 测试 fixture 里的自签证书(`tests/fixtures/fixture-cert.pem` / `fixture-key.pem`)由本仓生成,仅供本地 HTTPS fixture 使用,不随包分发。