@volter/twin-standard 1.0.127 → 1.0.129
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/dist/src/create-pack.d.ts +0 -1
- package/dist/src/create-pack.js +39 -2
- package/package.json +2 -2
- package/src/create-pack.ts +40 -2
|
@@ -31,7 +31,6 @@ export declare function packIndexFile(dir: string, vendor: string): string;
|
|
|
31
31
|
export declare function serverFile(vendor: string, grpc: boolean, wire?: boolean): string;
|
|
32
32
|
/** A pack's tsconfig.json, a fixed file: what the grade's typecheck (soundness) compiles, the pack and its lanes. */
|
|
33
33
|
export declare const TSCONFIG: string;
|
|
34
|
-
/** The fixed files of a new pack, by path, for a vendor: what nobody should write by hand. */
|
|
35
34
|
export declare function initFiles(vendor: string): Record<string, string>;
|
|
36
35
|
/** The fixed files of a pack of lanes (Cloudflare's API and R2, Sigstore's Fulcio and Rekor): each lane a derived
|
|
37
36
|
* surface of its own under `<lane>/src`, keeping the vendor's one store and sharing its `src/semantics/shared.ts`, and the
|
package/dist/src/create-pack.js
CHANGED
|
@@ -361,6 +361,43 @@ export const TSCONFIG = `${JSON.stringify({
|
|
|
361
361
|
exclude: ['node_modules'],
|
|
362
362
|
}, null, 2)}\n`;
|
|
363
363
|
/** The fixed files of a new pack, by path, for a vendor: what nobody should write by hand. */
|
|
364
|
+
function customerReadme(vendor) {
|
|
365
|
+
return `# @volter/twin-${vendor}
|
|
366
|
+
|
|
367
|
+
FILL: the customer outcome this twin enables with the vendor's unchanged SDK.
|
|
368
|
+
|
|
369
|
+
## Use it in a World
|
|
370
|
+
|
|
371
|
+
Choose this package's exact release in the [catalog](https://world.volter.ai/twins/${vendor}).
|
|
372
|
+
Its Setup tab supplies release-specific installation and World initialization commands.
|
|
373
|
+
Review the selected vendor, retain its package/version and lockfile, and run the app through
|
|
374
|
+
the World. [First local World](https://world-docs.volter.ai/docs/getting-started) explains the shared workflow.
|
|
375
|
+
|
|
376
|
+
## SDK workflow
|
|
377
|
+
|
|
378
|
+
FILL: the public vendor quickstart, pinned SDK/API versions and methods used by journeys/first-use.json.
|
|
379
|
+
FILL: a short unchanged-SDK example with asserted returned data and its expected result.
|
|
380
|
+
FILL: normal environment names, structurally valid throwaway credentials, required backing and API-created prerequisites.
|
|
381
|
+
|
|
382
|
+
## Data and behavior
|
|
383
|
+
|
|
384
|
+
FILL: what is synthetic stored state, what is a scenario or labeled stub, and how to inspect the result.
|
|
385
|
+
FILL: the workflow's stop/resume and reset behavior; state any non-applicable retained-readback scope.
|
|
386
|
+
Do not use real vendor credentials for local substitution.
|
|
387
|
+
|
|
388
|
+
## Scope and limits
|
|
389
|
+
|
|
390
|
+
FILL: supported customer operations and explicit gaps; generated surface counts are not a full SDK claim.
|
|
391
|
+
FILL: limitations specific to this vendor (for example model quality, real delivery or unsupported APIs).
|
|
392
|
+
The catalog's Evidence tab records actual measured journeys and their exact tool versions.
|
|
393
|
+
|
|
394
|
+
## Package facts
|
|
395
|
+
|
|
396
|
+
Protocol 3; vendor specification in spec/, provenance in spec/SOURCE.md.
|
|
397
|
+
FILL: license, Node requirement, kernel compatibility and the public issue tracker from package.json.
|
|
398
|
+
Contributor mechanics belong to the [pack procedure](https://world-docs.volter.ai/docs/contributing/architecture#creating-a-pack).
|
|
399
|
+
`;
|
|
400
|
+
}
|
|
364
401
|
export function initFiles(vendor) {
|
|
365
402
|
const Name = pascal(vendor);
|
|
366
403
|
const semantics = `${Name[0].toLowerCase()}${Name.slice(1)}Semantics`;
|
|
@@ -371,7 +408,7 @@ export function initFiles(vendor) {
|
|
|
371
408
|
peerDependencies: { '@volter/world-core': '*' }, engines: { node: '>=22.3' },
|
|
372
409
|
}, null, 2)}\n`,
|
|
373
410
|
'tsconfig.json': TSCONFIG,
|
|
374
|
-
'README.md':
|
|
411
|
+
'README.md': customerReadme(vendor),
|
|
375
412
|
'journeys/demand.json': `${JSON.stringify({ measured: 'FILL: when and how the applications were read', applications: [] }, null, 1)}\n`,
|
|
376
413
|
// Deliberately incomplete: the author supplies the SDK entry with the outline, before semantics. Keeping the file
|
|
377
414
|
// present prevents a new vendor from falling back to an older standard fixture; empty commands cannot qualify.
|
|
@@ -401,7 +438,7 @@ export function laneInitFiles(vendor, lanes) {
|
|
|
401
438
|
const single = initFiles(vendor);
|
|
402
439
|
const files = {
|
|
403
440
|
'package.json': single['package.json'].replace('"spec",', lanes.map((l) => `"${l}",`).join('\n ')),
|
|
404
|
-
'README.md':
|
|
441
|
+
'README.md': customerReadme(vendor).replace('Protocol 3; vendor specification in spec/, provenance in spec/SOURCE.md.', `Protocol 3; API lanes: ${lanes.map(l => `\`${l}/\``).join(', ')}. Vendor specifications and provenance live in each lane's spec/ and spec/SOURCE.md. FILL: the customer scope of each lane.`),
|
|
405
442
|
'journeys/demand.json': single['journeys/demand.json'],
|
|
406
443
|
'journeys/first-use.json': single['journeys/first-use.json'],
|
|
407
444
|
'tsconfig.json': TSCONFIG,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volter/twin-standard",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.129",
|
|
4
4
|
"description": "The Protocol 3 standard for Volter twin packs: the criteria a pack is graded by, the grader, the gate a pack repository and the twin catalog run on every change and submission, and the spec derivation the grade checks against. Pin a version: every place a pack is judged judges by that standard.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"twin",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"yaml": "2.9.0"
|
|
76
76
|
},
|
|
77
77
|
"peerDependencies": {
|
|
78
|
-
"@volter/world-core": "3.0.
|
|
78
|
+
"@volter/world-core": "3.0.137",
|
|
79
79
|
"@volter/world-runtime": "*",
|
|
80
80
|
"playwright": "^1.63.0"
|
|
81
81
|
},
|
package/src/create-pack.ts
CHANGED
|
@@ -352,6 +352,44 @@ export const TSCONFIG = `${JSON.stringify({
|
|
|
352
352
|
}, null, 2)}\n`;
|
|
353
353
|
|
|
354
354
|
/** The fixed files of a new pack, by path, for a vendor: what nobody should write by hand. */
|
|
355
|
+
function customerReadme(vendor: string): string {
|
|
356
|
+
return `# @volter/twin-${vendor}
|
|
357
|
+
|
|
358
|
+
FILL: the customer outcome this twin enables with the vendor's unchanged SDK.
|
|
359
|
+
|
|
360
|
+
## Use it in a World
|
|
361
|
+
|
|
362
|
+
Choose this package's exact release in the [catalog](https://world.volter.ai/twins/${vendor}).
|
|
363
|
+
Its Setup tab supplies release-specific installation and World initialization commands.
|
|
364
|
+
Review the selected vendor, retain its package/version and lockfile, and run the app through
|
|
365
|
+
the World. [First local World](https://world-docs.volter.ai/docs/getting-started) explains the shared workflow.
|
|
366
|
+
|
|
367
|
+
## SDK workflow
|
|
368
|
+
|
|
369
|
+
FILL: the public vendor quickstart, pinned SDK/API versions and methods used by journeys/first-use.json.
|
|
370
|
+
FILL: a short unchanged-SDK example with asserted returned data and its expected result.
|
|
371
|
+
FILL: normal environment names, structurally valid throwaway credentials, required backing and API-created prerequisites.
|
|
372
|
+
|
|
373
|
+
## Data and behavior
|
|
374
|
+
|
|
375
|
+
FILL: what is synthetic stored state, what is a scenario or labeled stub, and how to inspect the result.
|
|
376
|
+
FILL: the workflow's stop/resume and reset behavior; state any non-applicable retained-readback scope.
|
|
377
|
+
Do not use real vendor credentials for local substitution.
|
|
378
|
+
|
|
379
|
+
## Scope and limits
|
|
380
|
+
|
|
381
|
+
FILL: supported customer operations and explicit gaps; generated surface counts are not a full SDK claim.
|
|
382
|
+
FILL: limitations specific to this vendor (for example model quality, real delivery or unsupported APIs).
|
|
383
|
+
The catalog's Evidence tab records actual measured journeys and their exact tool versions.
|
|
384
|
+
|
|
385
|
+
## Package facts
|
|
386
|
+
|
|
387
|
+
Protocol 3; vendor specification in spec/, provenance in spec/SOURCE.md.
|
|
388
|
+
FILL: license, Node requirement, kernel compatibility and the public issue tracker from package.json.
|
|
389
|
+
Contributor mechanics belong to the [pack procedure](https://world-docs.volter.ai/docs/contributing/architecture#creating-a-pack).
|
|
390
|
+
`;
|
|
391
|
+
}
|
|
392
|
+
|
|
355
393
|
export function initFiles(vendor: string): Record<string, string> {
|
|
356
394
|
const Name = pascal(vendor);
|
|
357
395
|
const semantics = `${Name[0]!.toLowerCase()}${Name.slice(1)}Semantics`;
|
|
@@ -362,7 +400,7 @@ export function initFiles(vendor: string): Record<string, string> {
|
|
|
362
400
|
peerDependencies: { '@volter/world-core': '*' }, engines: { node: '>=22.3' },
|
|
363
401
|
}, null, 2)}\n`,
|
|
364
402
|
'tsconfig.json': TSCONFIG,
|
|
365
|
-
'README.md':
|
|
403
|
+
'README.md': customerReadme(vendor),
|
|
366
404
|
'journeys/demand.json': `${JSON.stringify({ measured: 'FILL: when and how the applications were read', applications: [] }, null, 1)}\n`,
|
|
367
405
|
// Deliberately incomplete: the author supplies the SDK entry with the outline, before semantics. Keeping the file
|
|
368
406
|
// present prevents a new vendor from falling back to an older standard fixture; empty commands cannot qualify.
|
|
@@ -393,7 +431,7 @@ export function laneInitFiles(vendor: string, lanes: string[]): Record<string, s
|
|
|
393
431
|
const single = initFiles(vendor);
|
|
394
432
|
const files: Record<string, string> = {
|
|
395
433
|
'package.json': single['package.json']!.replace('"spec",', lanes.map((l) => `"${l}",`).join('\n ')),
|
|
396
|
-
'README.md':
|
|
434
|
+
'README.md': customerReadme(vendor).replace('Protocol 3; vendor specification in spec/, provenance in spec/SOURCE.md.', `Protocol 3; API lanes: ${lanes.map(l => `\`${l}/\``).join(', ')}. Vendor specifications and provenance live in each lane's spec/ and spec/SOURCE.md. FILL: the customer scope of each lane.`),
|
|
397
435
|
'journeys/demand.json': single['journeys/demand.json']!,
|
|
398
436
|
'journeys/first-use.json': single['journeys/first-use.json']!,
|
|
399
437
|
'tsconfig.json': TSCONFIG,
|