@warmhub/cli 0.126.0 → 0.128.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.
- package/dist/wh.js +246 -206
- package/package.json +1 -1
package/dist/wh.js
CHANGED
|
@@ -17766,16 +17766,37 @@ var BUILTIN_SHAPE_NAMES = [
|
|
|
17766
17766
|
"List"
|
|
17767
17767
|
];
|
|
17768
17768
|
var RETIRED_COLLECTION_SHAPE_NAMES = ["Triple"];
|
|
17769
|
+
var V2_RELATION_SHAPE_NAMES = ["Arc", "Bond"];
|
|
17770
|
+
var V2_AGGREGATE_SHAPE_NAMES = ["Set", "List"];
|
|
17771
|
+
var ORDINARY_COLLECTION_SHAPE_NAMES = [
|
|
17772
|
+
...V2_RELATION_SHAPE_NAMES,
|
|
17773
|
+
...V2_AGGREGATE_SHAPE_NAMES
|
|
17774
|
+
];
|
|
17775
|
+
var COLLECTION_V2_SHAPE_NAMES = [
|
|
17776
|
+
"Collection",
|
|
17777
|
+
...ORDINARY_COLLECTION_SHAPE_NAMES
|
|
17778
|
+
];
|
|
17769
17779
|
var RESERVED_COLLECTION_SHAPE_NAMES = [
|
|
17770
17780
|
...BUILTIN_SHAPE_NAMES,
|
|
17771
17781
|
...RETIRED_COLLECTION_SHAPE_NAMES
|
|
17772
17782
|
];
|
|
17783
|
+
var COLLECTION_CLASSIFICATION_SHAPE_NAMES = [
|
|
17784
|
+
"Collection",
|
|
17785
|
+
...RESERVED_COLLECTION_SHAPE_NAMES
|
|
17786
|
+
];
|
|
17787
|
+
var COLLECTION_CLASSIFICATION_SHAPE_NAME_SET = new Set(COLLECTION_CLASSIFICATION_SHAPE_NAMES);
|
|
17773
17788
|
function isBuiltinCollectionShape(name) {
|
|
17774
17789
|
return BUILTIN_SHAPE_NAMES.includes(name);
|
|
17775
17790
|
}
|
|
17776
17791
|
function isRetiredCollectionShape(name) {
|
|
17777
17792
|
return RETIRED_COLLECTION_SHAPE_NAMES.includes(name);
|
|
17778
17793
|
}
|
|
17794
|
+
function isOrdinaryCollectionShape(name) {
|
|
17795
|
+
return ORDINARY_COLLECTION_SHAPE_NAMES.includes(name);
|
|
17796
|
+
}
|
|
17797
|
+
function isCollectionV2Shape(name) {
|
|
17798
|
+
return COLLECTION_V2_SHAPE_NAMES.includes(name);
|
|
17799
|
+
}
|
|
17779
17800
|
function isReservedCollectionShape(name) {
|
|
17780
17801
|
return RESERVED_COLLECTION_SHAPE_NAMES.includes(name);
|
|
17781
17802
|
}
|
|
@@ -17793,7 +17814,7 @@ var BUILTIN_LICENSE_SHAPE_NAMES = [
|
|
|
17793
17814
|
];
|
|
17794
17815
|
var isLicenseShape = (name) => BUILTIN_LICENSE_SHAPE_NAMES.includes(name);
|
|
17795
17816
|
function isRenameableSquattedShape(name) {
|
|
17796
|
-
return isReservedCollectionShape(name) || isViewShape(name) || isLicenseShape(name);
|
|
17817
|
+
return isReservedCollectionShape(name) || isCollectionV2Shape(name) || isViewShape(name) || isLicenseShape(name);
|
|
17797
17818
|
}
|
|
17798
17819
|
function isBuiltinShape(name) {
|
|
17799
17820
|
return BUILTIN_SHAPE_NAMES.includes(name) || BUILTIN_CONTENT_SHAPE_NAMES.includes(name) || BUILTIN_VIEW_SHAPE_NAMES.includes(name) || BUILTIN_LICENSE_SHAPE_NAMES.includes(name);
|
|
@@ -17838,6 +17859,47 @@ var BUILTIN_SHAPE_DEFS = {
|
|
|
17838
17859
|
description: "An ordered list of things"
|
|
17839
17860
|
}
|
|
17840
17861
|
};
|
|
17862
|
+
var COLLECTION_V2_SHAPE_DEFS = {
|
|
17863
|
+
Collection: { fields: {} },
|
|
17864
|
+
Arc: {
|
|
17865
|
+
fields: {
|
|
17866
|
+
from: { type: "wref", binding: "either" },
|
|
17867
|
+
to: { type: "wref", binding: "either" }
|
|
17868
|
+
},
|
|
17869
|
+
composes: ["Collection"]
|
|
17870
|
+
},
|
|
17871
|
+
Bond: {
|
|
17872
|
+
fields: {
|
|
17873
|
+
ends: {
|
|
17874
|
+
type: "array",
|
|
17875
|
+
items: { type: "wref", binding: "either" },
|
|
17876
|
+
minItems: 2,
|
|
17877
|
+
maxItems: 2
|
|
17878
|
+
}
|
|
17879
|
+
},
|
|
17880
|
+
composes: ["Collection"]
|
|
17881
|
+
},
|
|
17882
|
+
Set: {
|
|
17883
|
+
fields: {
|
|
17884
|
+
members: {
|
|
17885
|
+
type: "array",
|
|
17886
|
+
items: { type: "wref", binding: "either" },
|
|
17887
|
+
minItems: 1
|
|
17888
|
+
}
|
|
17889
|
+
},
|
|
17890
|
+
composes: ["Collection"]
|
|
17891
|
+
},
|
|
17892
|
+
List: {
|
|
17893
|
+
fields: {
|
|
17894
|
+
items: {
|
|
17895
|
+
type: "array",
|
|
17896
|
+
items: { type: "wref", binding: "either" },
|
|
17897
|
+
minItems: 1
|
|
17898
|
+
}
|
|
17899
|
+
},
|
|
17900
|
+
composes: ["Collection"]
|
|
17901
|
+
}
|
|
17902
|
+
};
|
|
17841
17903
|
var BUILTIN_CONTENT_SHAPE_DEFS = {
|
|
17842
17904
|
Content: {
|
|
17843
17905
|
fields: {
|
|
@@ -26050,10 +26112,10 @@ function illegalOpSequences(operations, errors, checkAddAdd, options) {
|
|
|
26050
26112
|
|
|
26051
26113
|
// ../../packages/rules/src/preflight-operation.ts
|
|
26052
26114
|
var collectionTypes = ["arc", "bond", "set", "list", "pair"];
|
|
26053
|
-
var canonicalCollectionTypes = ["arc", "bond", "set", "list"];
|
|
26115
|
+
var canonicalCollectionTypes = ["arc", "bond", "pair", "set", "list"];
|
|
26054
26116
|
var collectionOps = ["add", "revise"];
|
|
26055
26117
|
var COLLECTION_CREATE_REQUIRES_NAME_MESSAGE = "Collection create requires a name. Collections are ordinary named things (ADR 0004).";
|
|
26056
|
-
var COLLECTION_ABOUT_REMOVED_MESSAGE = 'about accepts a wref. Create the collection as its own named operation, then point the assertion at it. Prefer deterministic relationship names, for example: [{"operation":"add","kind":"
|
|
26118
|
+
var COLLECTION_ABOUT_REMOVED_MESSAGE = 'about accepts a wref. Create the collection as its own named operation, then point the assertion at it. Prefer deterministic relationship names, for example: [{"operation":"add","kind":"thing","name":"Arc/a-to-b","data":{"from":"Shape/A","to":"Shape/B"}},{"operation":"add","kind":"assertion","about":"Arc/a-to-b","name":"Assertion/example","data":{}}]. For CLI usage, use wh commit submit --file with the two operations.';
|
|
26057
26119
|
function parseCollectionType(value) {
|
|
26058
26120
|
return collectionTypes.find((candidate) => candidate === value) ?? null;
|
|
26059
26121
|
}
|
|
@@ -26088,7 +26150,7 @@ function builtinShapeGuard(op, operationIndex) {
|
|
|
26088
26150
|
message: `Shape "${op.newName}" is a retired collection shape and cannot be written manually`
|
|
26089
26151
|
});
|
|
26090
26152
|
} else {
|
|
26091
|
-
const builtinShapeName = name && isBuiltinShape(name) && !reservedSourcePassThrough ? name : isShapeRename && op.newName && isBuiltinShape(op.newName) ? op.newName : undefined;
|
|
26153
|
+
const builtinShapeName = name && (isBuiltinShape(name) || isCollectionV2Shape(name)) && !reservedSourcePassThrough ? name : isShapeRename && op.newName && (isBuiltinShape(op.newName) || isCollectionV2Shape(op.newName)) ? op.newName : undefined;
|
|
26092
26154
|
if (builtinShapeName && (isShapeRename || op.operation !== "retract" && op.kind === "shape")) {
|
|
26093
26155
|
const action = op.operation === "add" ? "created" : op.operation === "rename" ? "renamed" : "revised";
|
|
26094
26156
|
errors.push({
|
|
@@ -26098,7 +26160,7 @@ function builtinShapeGuard(op, operationIndex) {
|
|
|
26098
26160
|
});
|
|
26099
26161
|
}
|
|
26100
26162
|
}
|
|
26101
|
-
if (name) {
|
|
26163
|
+
if (name && op.operation !== "retract") {
|
|
26102
26164
|
const local = splitLocalPath(name);
|
|
26103
26165
|
if (local && isRetiredCollectionShape(local.shapePrefix)) {
|
|
26104
26166
|
errors.push({
|
|
@@ -26106,7 +26168,7 @@ function builtinShapeGuard(op, operationIndex) {
|
|
|
26106
26168
|
operationIndex,
|
|
26107
26169
|
message: `Cannot ${op.operation} under retired collection shape "${local.shapePrefix}". Triple is read-only and retired for new collection writes.`
|
|
26108
26170
|
});
|
|
26109
|
-
} else if (op.kind === "thing" && local && isBuiltinCollectionShape(local.shapePrefix)) {
|
|
26171
|
+
} else if (op.kind === "thing" && local && (isBuiltinCollectionShape(local.shapePrefix) && !isOrdinaryCollectionShape(local.shapePrefix) || local.shapePrefix === "Collection")) {
|
|
26110
26172
|
const message = op.operation === "add" ? `Cannot add kind="thing" under built-in shape "${local.shapePrefix}". Use kind="collection" instead.` : `Cannot revise kind="thing" under built-in shape "${local.shapePrefix}". Use kind="collection" to revise a collection.`;
|
|
26111
26173
|
errors.push({
|
|
26112
26174
|
code: "VALIDATION_ERROR",
|
|
@@ -26195,6 +26257,7 @@ function validateCollectionOps(op, operationIndex) {
|
|
|
26195
26257
|
if (parseCollectionOp(op.operation) === null) {
|
|
26196
26258
|
return errors;
|
|
26197
26259
|
}
|
|
26260
|
+
const collectionType = parseCollectionType(op.type);
|
|
26198
26261
|
if (op.operation === "add" && !op.name) {
|
|
26199
26262
|
errors.push({
|
|
26200
26263
|
code: "VALIDATION_ERROR",
|
|
@@ -26202,7 +26265,6 @@ function validateCollectionOps(op, operationIndex) {
|
|
|
26202
26265
|
message: COLLECTION_CREATE_REQUIRES_NAME_MESSAGE
|
|
26203
26266
|
});
|
|
26204
26267
|
}
|
|
26205
|
-
const collectionType = parseCollectionType(op.type);
|
|
26206
26268
|
if (collectionType === null) {
|
|
26207
26269
|
errors.push({
|
|
26208
26270
|
code: "VALIDATION_ERROR",
|
|
@@ -40590,12 +40652,12 @@ function compareUnsignedUtf8(left, right) {
|
|
|
40590
40652
|
var CHECKPOINT_CHUNK_BYTE_LIMIT = 67108864;
|
|
40591
40653
|
var CHECKPOINT_PART_DIGITS = 10;
|
|
40592
40654
|
var CHECKPOINT_FORMAT = "warmhub-repository-checkpoint";
|
|
40593
|
-
var CHECKPOINT_FORMAT_VERSION =
|
|
40655
|
+
var CHECKPOINT_FORMAT_VERSION = 3;
|
|
40594
40656
|
var CHECKPOINT_MANIFEST_NAME = "repository-checkpoint.json";
|
|
40595
40657
|
var checkpointSha256Schema = exports_external.string().regex(/^[0-9a-f]{64}$/);
|
|
40596
|
-
var nonnegativeSafeIntegerSchema = exports_external.number().int().nonnegative()
|
|
40597
|
-
var positiveSafeIntegerSchema = exports_external.number().int().positive()
|
|
40598
|
-
var jsonNumberSchema = exports_external.number().
|
|
40658
|
+
var nonnegativeSafeIntegerSchema = exports_external.number().int().nonnegative();
|
|
40659
|
+
var positiveSafeIntegerSchema = exports_external.number().int().positive();
|
|
40660
|
+
var jsonNumberSchema = exports_external.number().refine((value) => !Number.isInteger(value) || Number.isSafeInteger(value), "JSON integers must be safe integers");
|
|
40599
40661
|
var jsonValueSchema = exports_external.lazy(() => exports_external.union([
|
|
40600
40662
|
exports_external.null(),
|
|
40601
40663
|
exports_external.boolean(),
|
|
@@ -40607,11 +40669,11 @@ var jsonValueSchema = exports_external.lazy(() => exports_external.union([
|
|
|
40607
40669
|
var checkpointRowBaseSchema = exports_external.object({
|
|
40608
40670
|
wref: exports_external.string().min(1),
|
|
40609
40671
|
durableId: exports_external.string().min(1),
|
|
40610
|
-
version: exports_external.number().int().positive()
|
|
40672
|
+
version: exports_external.number().int().positive(),
|
|
40611
40673
|
active: exports_external.literal(true),
|
|
40612
40674
|
data: jsonValueSchema
|
|
40613
40675
|
});
|
|
40614
|
-
var pinnedWrefSchema = exports_external.string().regex(/^[^\r\n]+@v[1-9]\d
|
|
40676
|
+
var pinnedWrefSchema = exports_external.string().regex(/^[^\r\n]+@v[1-9]\d*(?![\s\S])/, "Checkpoint wref must be pinned with @vN");
|
|
40615
40677
|
var affirmedWrefsSchema = exports_external.array(pinnedWrefSchema).superRefine((wrefs, context) => {
|
|
40616
40678
|
for (let index = 1;index < wrefs.length; index += 1) {
|
|
40617
40679
|
const previous = wrefs[index - 1];
|
|
@@ -40625,11 +40687,16 @@ var affirmedWrefsSchema = exports_external.array(pinnedWrefSchema).superRefine((
|
|
|
40625
40687
|
}
|
|
40626
40688
|
}
|
|
40627
40689
|
});
|
|
40690
|
+
var checkpointCollectionsSchema = exports_external.array(exports_external.object({
|
|
40691
|
+
shape: exports_external.string().min(1),
|
|
40692
|
+
memberCount: nonnegativeSafeIntegerSchema
|
|
40693
|
+
}).strict()).min(1);
|
|
40628
40694
|
var checkpointRowSchema = exports_external.discriminatedUnion("kind", [
|
|
40629
40695
|
checkpointRowBaseSchema.extend({ kind: exports_external.literal("shape") }).strict(),
|
|
40630
40696
|
checkpointRowBaseSchema.extend({
|
|
40631
|
-
kind: exports_external.
|
|
40632
|
-
shapeName: exports_external.string().min(1)
|
|
40697
|
+
kind: exports_external.literal("thing"),
|
|
40698
|
+
shapeName: exports_external.string().min(1),
|
|
40699
|
+
collections: checkpointCollectionsSchema.optional()
|
|
40633
40700
|
}).strict(),
|
|
40634
40701
|
checkpointRowBaseSchema.extend({
|
|
40635
40702
|
kind: exports_external.literal("assertion"),
|
|
@@ -40653,9 +40720,9 @@ var checkpointManifestStreamSchema = exports_external.object({
|
|
|
40653
40720
|
var checkpointManifestFields = {
|
|
40654
40721
|
format: exports_external.literal(CHECKPOINT_FORMAT),
|
|
40655
40722
|
formatVersion: exports_external.literal(CHECKPOINT_FORMAT_VERSION),
|
|
40656
|
-
checkpointId: exports_external.
|
|
40723
|
+
checkpointId: exports_external.uuid(),
|
|
40657
40724
|
repository: exports_external.object({
|
|
40658
|
-
id: exports_external.
|
|
40725
|
+
id: exports_external.uuid(),
|
|
40659
40726
|
org: exports_external.string().min(1),
|
|
40660
40727
|
repo: exports_external.string().min(1)
|
|
40661
40728
|
}).strict(),
|
|
@@ -40848,7 +40915,7 @@ function addOneSafe(value) {
|
|
|
40848
40915
|
return next;
|
|
40849
40916
|
}
|
|
40850
40917
|
// ../../packages/rules/src/repository-export/types.ts
|
|
40851
|
-
var REPOSITORY_EXPORT_FORMAT_VERSION =
|
|
40918
|
+
var REPOSITORY_EXPORT_FORMAT_VERSION = 4;
|
|
40852
40919
|
var REPOSITORY_EXPORT_MEDIA_TYPE = "application/x-ndjson";
|
|
40853
40920
|
var repositoryExportSha256Schema = exports_external.string().regex(/^[0-9a-f]{64}$/);
|
|
40854
40921
|
var nonnegativeSafeIntegerSchema2 = exports_external.number().int().nonnegative();
|
|
@@ -40856,22 +40923,10 @@ var positiveSafeIntegerSchema2 = exports_external.number().int().positive();
|
|
|
40856
40923
|
var REPOSITORY_EXPORT_ROW_KINDS = [
|
|
40857
40924
|
"shape",
|
|
40858
40925
|
"thing",
|
|
40859
|
-
"collection",
|
|
40860
40926
|
"assertion"
|
|
40861
40927
|
];
|
|
40862
40928
|
var REPOSITORY_EXPORT_MODES = ["heads", "ops"];
|
|
40863
|
-
var
|
|
40864
|
-
"captured",
|
|
40865
|
-
"migration-stamped",
|
|
40866
|
-
"reconstructed"
|
|
40867
|
-
];
|
|
40868
|
-
var repositoryExportShapeCertificateSchema = exports_external.object({
|
|
40869
|
-
name: exports_external.string().min(1),
|
|
40870
|
-
v: positiveSafeIntegerSchema2,
|
|
40871
|
-
durableId: exports_external.string().min(1),
|
|
40872
|
-
provenance: exports_external.enum(REPOSITORY_EXPORT_SHAPE_PROVENANCES),
|
|
40873
|
-
declared: exports_external.boolean()
|
|
40874
|
-
}).strict();
|
|
40929
|
+
var repositoryExportShapeCertificateSchema = exports_external.string().regex(/^[^\r\n]+@v[1-9]\d*(?![\s\S])/, "Shape certificate must be a pinned wref");
|
|
40875
40930
|
var repositoryExportReferenceSchema = exports_external.object({
|
|
40876
40931
|
wref: exports_external.string().min(1),
|
|
40877
40932
|
v: positiveSafeIntegerSchema2.optional(),
|
|
@@ -40888,11 +40943,23 @@ function refineStrictlyIncreasing(entries, key, message, context) {
|
|
|
40888
40943
|
});
|
|
40889
40944
|
}
|
|
40890
40945
|
var shapesSchema = exports_external.array(repositoryExportShapeCertificateSchema).superRefine((shapes, context) => {
|
|
40891
|
-
refineStrictlyIncreasing(shapes, (entry) => entry
|
|
40946
|
+
refineStrictlyIncreasing(shapes.slice(1), (entry) => entry, "Shape certificates after the declared one must be unique and strictly increasing", context);
|
|
40947
|
+
const declared = shapes[0];
|
|
40948
|
+
if (declared !== undefined && shapes.indexOf(declared, 1) !== -1) {
|
|
40949
|
+
context.addIssue({
|
|
40950
|
+
code: "custom",
|
|
40951
|
+
path: [shapes.indexOf(declared, 1)],
|
|
40952
|
+
message: "The declared Shape must not repeat in the closure tail"
|
|
40953
|
+
});
|
|
40954
|
+
}
|
|
40892
40955
|
});
|
|
40893
40956
|
var affirmedSchema = exports_external.array(repositoryExportReferenceSchema).superRefine((affirmed, context) => {
|
|
40894
40957
|
refineStrictlyIncreasing(affirmed, (entry) => entry.wref, "Affirmed references must be unique and strictly increasing", context);
|
|
40895
40958
|
});
|
|
40959
|
+
var repositoryExportCollectionsSchema = exports_external.array(exports_external.object({
|
|
40960
|
+
shape: exports_external.string().min(1),
|
|
40961
|
+
memberCount: exports_external.number().int().nonnegative()
|
|
40962
|
+
}).strict()).min(1);
|
|
40896
40963
|
var rowEnvelopeFields = {
|
|
40897
40964
|
wref: exports_external.string().min(1),
|
|
40898
40965
|
durableId: exports_external.string().min(1),
|
|
@@ -40911,8 +40978,9 @@ var activeRowSchema = exports_external.discriminatedUnion("kind", [
|
|
|
40911
40978
|
}).strict(),
|
|
40912
40979
|
exports_external.object({
|
|
40913
40980
|
...activeRowFields,
|
|
40914
|
-
kind: exports_external.
|
|
40915
|
-
shapes: shapesSchema
|
|
40981
|
+
kind: exports_external.literal("thing"),
|
|
40982
|
+
shapes: shapesSchema,
|
|
40983
|
+
collections: repositoryExportCollectionsSchema.optional()
|
|
40916
40984
|
}).strict(),
|
|
40917
40985
|
exports_external.object({
|
|
40918
40986
|
...activeRowFields,
|
|
@@ -41631,13 +41699,28 @@ var SYSTEM_MANIFEST = {
|
|
|
41631
41699
|
},
|
|
41632
41700
|
shapes: [
|
|
41633
41701
|
{ name: "ComponentInstall", fields: COMPONENT_INSTALL_FIELDS },
|
|
41634
|
-
{ name: "ComponentConfig", fields: COMPONENT_CONFIG_FIELDS }
|
|
41702
|
+
{ name: "ComponentConfig", fields: COMPONENT_CONFIG_FIELDS },
|
|
41703
|
+
{ name: "Collection", ...COLLECTION_V2_SHAPE_DEFS.Collection },
|
|
41704
|
+
{ name: "Arc", ...COLLECTION_V2_SHAPE_DEFS.Arc },
|
|
41705
|
+
{ name: "Bond", ...COLLECTION_V2_SHAPE_DEFS.Bond },
|
|
41706
|
+
{ name: "Set", ...COLLECTION_V2_SHAPE_DEFS.Set },
|
|
41707
|
+
{ name: "List", ...COLLECTION_V2_SHAPE_DEFS.List }
|
|
41635
41708
|
],
|
|
41636
41709
|
credentials: [],
|
|
41637
41710
|
subscriptions: [],
|
|
41638
41711
|
seeds: [],
|
|
41639
41712
|
health: {
|
|
41640
|
-
requires: {
|
|
41713
|
+
requires: {
|
|
41714
|
+
shapes: [
|
|
41715
|
+
"ComponentInstall",
|
|
41716
|
+
"ComponentConfig",
|
|
41717
|
+
"Collection",
|
|
41718
|
+
"Arc",
|
|
41719
|
+
"Bond",
|
|
41720
|
+
"Set",
|
|
41721
|
+
"List"
|
|
41722
|
+
]
|
|
41723
|
+
}
|
|
41641
41724
|
},
|
|
41642
41725
|
teardown: {},
|
|
41643
41726
|
runtimeAccess: { reads: [], writes: [] }
|
|
@@ -41657,7 +41740,12 @@ var SYSTEM_COMPONENT = {
|
|
|
41657
41740
|
name: "ComponentConfig",
|
|
41658
41741
|
fields: COMPONENT_CONFIG_FIELDS,
|
|
41659
41742
|
installInfra: true
|
|
41660
|
-
}
|
|
41743
|
+
},
|
|
41744
|
+
{ name: "Collection", ...COLLECTION_V2_SHAPE_DEFS.Collection },
|
|
41745
|
+
{ name: "Arc", ...COLLECTION_V2_SHAPE_DEFS.Arc },
|
|
41746
|
+
{ name: "Bond", ...COLLECTION_V2_SHAPE_DEFS.Bond },
|
|
41747
|
+
{ name: "Set", ...COLLECTION_V2_SHAPE_DEFS.Set },
|
|
41748
|
+
{ name: "List", ...COLLECTION_V2_SHAPE_DEFS.List }
|
|
41661
41749
|
]
|
|
41662
41750
|
};
|
|
41663
41751
|
|
|
@@ -45323,7 +45411,7 @@ function createStreamingSubmissionHandle(input, deps) {
|
|
|
45323
45411
|
// ../../packages/sdk-ts/package.json
|
|
45324
45412
|
var package_default = {
|
|
45325
45413
|
name: "@warmhub/sdk-ts",
|
|
45326
|
-
version: "0.
|
|
45414
|
+
version: "0.126.0",
|
|
45327
45415
|
private: false,
|
|
45328
45416
|
type: "module",
|
|
45329
45417
|
description: "The TypeScript SDK for WarmHub — create repos, commit and query data, and compound knowledge with your AI agents.",
|
|
@@ -47160,7 +47248,8 @@ class WarmHubClient {
|
|
|
47160
47248
|
wref,
|
|
47161
47249
|
version: opts?.version,
|
|
47162
47250
|
limit: opts?.limit,
|
|
47163
|
-
cursor: opts?.cursor
|
|
47251
|
+
cursor: opts?.cursor,
|
|
47252
|
+
shape: opts?.shape
|
|
47164
47253
|
});
|
|
47165
47254
|
} catch (error51) {
|
|
47166
47255
|
throw toWarmHubError(error51);
|
|
@@ -47199,7 +47288,8 @@ class WarmHubClient {
|
|
|
47199
47288
|
wref,
|
|
47200
47289
|
version: opts?.version,
|
|
47201
47290
|
members,
|
|
47202
|
-
position: opts?.position
|
|
47291
|
+
position: opts?.position,
|
|
47292
|
+
shape: opts?.shape
|
|
47203
47293
|
});
|
|
47204
47294
|
} catch (error51) {
|
|
47205
47295
|
throw toWarmHubError(error51);
|
|
@@ -47214,7 +47304,8 @@ class WarmHubClient {
|
|
|
47214
47304
|
rightWref,
|
|
47215
47305
|
leftVersion: opts?.leftVersion,
|
|
47216
47306
|
rightVersion: opts?.rightVersion,
|
|
47217
|
-
mode: opts?.mode
|
|
47307
|
+
mode: opts?.mode,
|
|
47308
|
+
shape: opts?.shape
|
|
47218
47309
|
});
|
|
47219
47310
|
} catch (error51) {
|
|
47220
47311
|
throw toWarmHubError(error51);
|
|
@@ -47259,7 +47350,8 @@ class WarmHubClient {
|
|
|
47259
47350
|
orgName,
|
|
47260
47351
|
repoName,
|
|
47261
47352
|
wref,
|
|
47262
|
-
version: opts?.version
|
|
47353
|
+
version: opts?.version,
|
|
47354
|
+
shape: opts?.shape
|
|
47263
47355
|
});
|
|
47264
47356
|
} catch (error51) {
|
|
47265
47357
|
throw toWarmHubError(error51);
|
|
@@ -52135,30 +52227,23 @@ function pinnedWref(c, wref, version2) {
|
|
|
52135
52227
|
function kindLabel(c, kind) {
|
|
52136
52228
|
return `${c.dim}${kind}${c.reset}`;
|
|
52137
52229
|
}
|
|
52138
|
-
function
|
|
52139
|
-
if (!
|
|
52140
|
-
return
|
|
52141
|
-
const
|
|
52142
|
-
|
|
52143
|
-
|
|
52144
|
-
|
|
52145
|
-
|
|
52146
|
-
|
|
52147
|
-
|
|
52148
|
-
|
|
52149
|
-
|
|
52150
|
-
|
|
52151
|
-
|
|
52152
|
-
|
|
52153
|
-
|
|
52154
|
-
|
|
52155
|
-
});
|
|
52156
|
-
}
|
|
52157
|
-
}
|
|
52158
|
-
return result;
|
|
52159
|
-
}
|
|
52160
|
-
function effectiveKind(kind, shapeName) {
|
|
52161
|
-
if ((kind === "thing" || kind === "collection" || !kind) && shapeName && isBuiltinCollectionShape(shapeName)) {
|
|
52230
|
+
function asCollectionSummaries(value) {
|
|
52231
|
+
if (!Array.isArray(value))
|
|
52232
|
+
return;
|
|
52233
|
+
const entries = value.filter((entry) => typeof entry === "object" && entry !== null && typeof entry.shape === "string");
|
|
52234
|
+
return entries.length > 0 ? entries : undefined;
|
|
52235
|
+
}
|
|
52236
|
+
function bareShapeName(token) {
|
|
52237
|
+
const withoutVersion = token.split("@", 1)[0] ?? "";
|
|
52238
|
+
return withoutVersion.slice(withoutVersion.lastIndexOf("/") + 1);
|
|
52239
|
+
}
|
|
52240
|
+
function effectiveKind(kind, shapeName, collections) {
|
|
52241
|
+
if (kind !== "thing" && kind)
|
|
52242
|
+
return kind;
|
|
52243
|
+
const summaryShape = collections?.[0]?.shape;
|
|
52244
|
+
if (summaryShape)
|
|
52245
|
+
return bareShapeName(summaryShape).toLowerCase();
|
|
52246
|
+
if (shapeName && isBuiltinCollectionShape(shapeName)) {
|
|
52162
52247
|
return shapeName.toLowerCase();
|
|
52163
52248
|
}
|
|
52164
52249
|
return kind;
|
|
@@ -53084,7 +53169,7 @@ function renderHead(out, c, chars, result, org, repo, shape, kind) {
|
|
|
53084
53169
|
for (const item of items) {
|
|
53085
53170
|
const wref = pinnedWref(c, item.wref ?? item.name ?? "(unknown)", item.version);
|
|
53086
53171
|
const shapeName = item.shapeName;
|
|
53087
|
-
const kl = kindLabel(c, effectiveKind(item.kind ?? "thing", shapeName));
|
|
53172
|
+
const kl = kindLabel(c, effectiveKind(item.kind ?? "thing", shapeName, asCollectionSummaries(item.collections)));
|
|
53088
53173
|
const retractedTag = item.active === false ? ` ${c.red}[RETRACTED]${c.reset}` : "";
|
|
53089
53174
|
out(` ${wref} ${kl}${retractedTag}`);
|
|
53090
53175
|
if (item.declaredShapes?.length) {
|
|
@@ -53099,11 +53184,7 @@ function renderHead(out, c, chars, result, org, repo, shape, kind) {
|
|
|
53099
53184
|
if (item.affirmedWrefs?.length) {
|
|
53100
53185
|
out(` ${c.dim}affirms:${c.reset} ${refList(c, item.affirmedWrefs, decorations)}`);
|
|
53101
53186
|
}
|
|
53102
|
-
|
|
53103
|
-
if (fields) {
|
|
53104
|
-
const allWrefs = fields.flatMap((f) => f.wrefs);
|
|
53105
|
-
out(` ${refList(c, allWrefs, decorations)}`);
|
|
53106
|
-
} else if (item.data && typeof item.data === "object") {
|
|
53187
|
+
if (item.data && typeof item.data === "object") {
|
|
53107
53188
|
out(` ${dataPreview(c, item.data)}`);
|
|
53108
53189
|
}
|
|
53109
53190
|
const itemMeta = item.metadata;
|
|
@@ -53117,7 +53198,7 @@ function renderThing(out, c, result) {
|
|
|
53117
53198
|
const decorations = getResponseDecorations(result);
|
|
53118
53199
|
const wref = result.wref ?? result.name ?? "(unknown)";
|
|
53119
53200
|
const shapeName = singularShapeName(result);
|
|
53120
|
-
const displayKind = effectiveKind(result.kind ?? "thing", shapeName);
|
|
53201
|
+
const displayKind = effectiveKind(result.kind ?? "thing", shapeName, result.collections);
|
|
53121
53202
|
const retractedTag = result.active === false ? ` ${c.red}[RETRACTED]${c.reset}` : "";
|
|
53122
53203
|
out(`${pinnedWref(c, wref, result.version)} ${kindLabel(c, displayKind)}${retractedTag}`);
|
|
53123
53204
|
out(` ${c.dim}wref:${c.reset} ${escapeTerminalTextForDisplay(wref)}`);
|
|
@@ -53153,29 +53234,18 @@ function renderThing(out, c, result) {
|
|
|
53153
53234
|
out(` ${c.dim}revisedOn:${c.reset} ${formatTime(meta3.revisedOn, now)}`);
|
|
53154
53235
|
}
|
|
53155
53236
|
}
|
|
53156
|
-
|
|
53157
|
-
renderCollectionSummary(out, c,
|
|
53237
|
+
for (const collection of result.collections ?? []) {
|
|
53238
|
+
renderCollectionSummary(out, c, collection, decorations);
|
|
53158
53239
|
}
|
|
53159
|
-
|
|
53160
|
-
if (fields) {
|
|
53161
|
-
for (const field of fields) {
|
|
53162
|
-
if (field.wrefs.length === 1) {
|
|
53163
|
-
const pad = " ".repeat(Math.max(1, 9 - field.name.length));
|
|
53164
|
-
out(` ${c.dim}${escapeTerminalTextForDisplay(field.name)}:${c.reset}${pad}${refDisplay(c, field.wrefs[0] ?? "", decorations)}`);
|
|
53165
|
-
} else {
|
|
53166
|
-
out(` ${c.dim}${escapeTerminalTextForDisplay(field.name)}:${c.reset}`);
|
|
53167
|
-
for (const w of field.wrefs) {
|
|
53168
|
-
out(` ${refDisplay(c, w, decorations)}`);
|
|
53169
|
-
}
|
|
53170
|
-
}
|
|
53171
|
-
}
|
|
53172
|
-
} else if (result.data) {
|
|
53240
|
+
if (result.data) {
|
|
53173
53241
|
out(` ${c.dim}data:${c.reset}`);
|
|
53174
53242
|
renderJsonDataBlock(out, c, result.data, " ", decorations);
|
|
53175
53243
|
}
|
|
53176
53244
|
}
|
|
53177
53245
|
function renderCollectionSummary(out, c, collection, decorations) {
|
|
53178
|
-
out(` ${c.dim}collection:${c.reset} ${collection.
|
|
53246
|
+
out(` ${c.dim}collection:${c.reset} ${collection.shape}`);
|
|
53247
|
+
if (collection.memberCount === undefined)
|
|
53248
|
+
return;
|
|
53179
53249
|
out(` ${c.dim}members:${c.reset} ${collection.memberCount}`);
|
|
53180
53250
|
if (collection.fullData)
|
|
53181
53251
|
return;
|
|
@@ -53209,7 +53279,7 @@ function renderGraphValue(out, c, value, indent, decorations) {
|
|
|
53209
53279
|
function renderGraphNode(out, c, result, indent = "", decorations) {
|
|
53210
53280
|
const wref = result.wref ?? result.name ?? "(unknown)";
|
|
53211
53281
|
const shapeName = singularShapeName(result);
|
|
53212
|
-
const displayKind = effectiveKind(result.kind ?? "thing", shapeName);
|
|
53282
|
+
const displayKind = effectiveKind(result.kind ?? "thing", shapeName, result.collections);
|
|
53213
53283
|
out(`${indent}${pinnedWref(c, wref, result.version)} ${kindLabel(c, displayKind)}`);
|
|
53214
53284
|
if (result.about) {
|
|
53215
53285
|
out(`${indent} ${c.dim}about:${c.reset}`);
|
|
@@ -53339,7 +53409,7 @@ function renderBatchView(out, c, result, wrefs, flagsVersion) {
|
|
|
53339
53409
|
const requestedBase = requested.replace(/@.+$/, "");
|
|
53340
53410
|
const fallback = item.wref ?? `${item.shapeName ?? "?"}/${item.name ?? "(unknown)"}`;
|
|
53341
53411
|
const base = requestedBase.length > 0 ? requestedBase : fallback.replace(/@v\d+$/, "");
|
|
53342
|
-
const kl = kindLabel(c, effectiveKind(item.kind ?? "thing", item.shapeName));
|
|
53412
|
+
const kl = kindLabel(c, effectiveKind(item.kind ?? "thing", item.shapeName, asCollectionSummaries(item.collections)));
|
|
53343
53413
|
const retractedTag = item.active === false ? ` ${c.red}[RETRACTED]${c.reset}` : "";
|
|
53344
53414
|
const display = labeledRef(c, `${base}@v${item.version}`, fallback) ?? `${escapeTerminalTextForDisplay(base)}@v${item.version}`;
|
|
53345
53415
|
out(` ${display} ${kl}${retractedTag}`);
|
|
@@ -54091,7 +54161,7 @@ function renderQueryResults(out, c, result) {
|
|
|
54091
54161
|
for (const item of items) {
|
|
54092
54162
|
const wref = pinnedWref(c, item.wref ?? item.name ?? "(unknown)", item.version);
|
|
54093
54163
|
const shapeName = item.shapeName;
|
|
54094
|
-
const kl = kindLabel(c, effectiveKind(item.kind ?? "thing", shapeName));
|
|
54164
|
+
const kl = kindLabel(c, effectiveKind(item.kind ?? "thing", shapeName, asCollectionSummaries(item.collections)));
|
|
54095
54165
|
const retractedTag = item.active === false ? ` ${c.red}[RETRACTED]${c.reset}` : "";
|
|
54096
54166
|
out(` ${wref} ${kl}${retractedTag}`);
|
|
54097
54167
|
if (item.declaredShapes?.length) {
|
|
@@ -54103,11 +54173,7 @@ function renderQueryResults(out, c, result) {
|
|
|
54103
54173
|
if (item.roles?.length) {
|
|
54104
54174
|
out(` ${c.dim}roles:${c.reset} ${item.roles.join(", ")}`);
|
|
54105
54175
|
}
|
|
54106
|
-
|
|
54107
|
-
if (fields) {
|
|
54108
|
-
const allWrefs = fields.flatMap((f) => f.wrefs);
|
|
54109
|
-
out(` ${refList(c, allWrefs, decorations)}`);
|
|
54110
|
-
} else if (item.data && typeof item.data === "object") {
|
|
54176
|
+
if (item.data && typeof item.data === "object") {
|
|
54111
54177
|
out(` ${dataPreview(c, item.data)}`);
|
|
54112
54178
|
}
|
|
54113
54179
|
}
|
|
@@ -56424,9 +56490,11 @@ function renderMembers(ctx, result) {
|
|
|
56424
56490
|
return;
|
|
56425
56491
|
}
|
|
56426
56492
|
const decorations = getResponseDecorations(result);
|
|
56427
|
-
|
|
56428
|
-
|
|
56429
|
-
|
|
56493
|
+
const labels = result.items.map((item) => item.position === undefined ? item.fieldPath : `${item.fieldPath}[${item.position}]`);
|
|
56494
|
+
const width = Math.max(...labels.map((label) => label.length));
|
|
56495
|
+
for (const [index, item] of result.items.entries()) {
|
|
56496
|
+
const label = labels[index] ?? "";
|
|
56497
|
+
ctx.out(` ${c.dim}${label.padEnd(width, " ")}${c.reset} ${refDisplay(c, item.wref, decorations)}`);
|
|
56430
56498
|
}
|
|
56431
56499
|
}
|
|
56432
56500
|
function renderContains(ctx, result) {
|
|
@@ -56467,7 +56535,7 @@ function renderDiff(ctx, result) {
|
|
|
56467
56535
|
}
|
|
56468
56536
|
function renderStats(ctx, result) {
|
|
56469
56537
|
const c = ctx.colors;
|
|
56470
|
-
ctx.out(`${pinnedWref(c, result.wref)} ${c.dim}${result.
|
|
56538
|
+
ctx.out(`${pinnedWref(c, result.wref)} ${c.dim}${result.shape}${c.reset}`);
|
|
56471
56539
|
ctx.out(`members: ${result.memberCount}`);
|
|
56472
56540
|
ctx.out(`unique: ${result.uniqueMemberCount}`);
|
|
56473
56541
|
}
|
|
@@ -56526,11 +56594,11 @@ async function readStreamUtf82(input) {
|
|
|
56526
56594
|
var SUPPORTED_COLLECTION_TYPES = [
|
|
56527
56595
|
"arc",
|
|
56528
56596
|
"bond",
|
|
56597
|
+
"pair",
|
|
56529
56598
|
"set",
|
|
56530
|
-
"list"
|
|
56531
|
-
"pair"
|
|
56599
|
+
"list"
|
|
56532
56600
|
];
|
|
56533
|
-
var CANONICAL_COLLECTION_TYPE_USAGE = "<arc|bond|set|list>";
|
|
56601
|
+
var CANONICAL_COLLECTION_TYPE_USAGE = "<arc|bond|pair|set|list>";
|
|
56534
56602
|
var commonWriteFlags = {
|
|
56535
56603
|
"event-request-id": operationEventRequestIdFlag,
|
|
56536
56604
|
message: flag.string({ short: "m", description: "Commit message" }),
|
|
@@ -56576,7 +56644,7 @@ var collectionQueryFlags = {
|
|
|
56576
56644
|
};
|
|
56577
56645
|
var collectionCreateFlags = {
|
|
56578
56646
|
type: flag.string({
|
|
56579
|
-
description: "
|
|
56647
|
+
description: "set, list, or the legacy deprecated arc, bond, pair. Set/List land as ordinary Things under their protected V2 Shapes; arc/bond/pair are accepted during the compatibility window and lowered to ordinary Things."
|
|
56580
56648
|
}),
|
|
56581
56649
|
name: flag.string({
|
|
56582
56650
|
description: "Collection local name. Collections are ordinary named things."
|
|
@@ -56605,13 +56673,19 @@ var collectionCreateFlags = {
|
|
|
56605
56673
|
...collectionQueryFlags,
|
|
56606
56674
|
...commonWriteFlags
|
|
56607
56675
|
};
|
|
56676
|
+
var collectionReadShapeFlag = {
|
|
56677
|
+
shape: flag.string({
|
|
56678
|
+
description: "Collection Shape to read this Thing under (required for composites, e.g. Arc)"
|
|
56679
|
+
})
|
|
56680
|
+
};
|
|
56608
56681
|
var collectionMembersFlags = {
|
|
56609
56682
|
limit: flag.number({
|
|
56610
56683
|
description: "Max members per page (default: 50, max: 500)"
|
|
56611
56684
|
}),
|
|
56612
56685
|
cursor: flag.string({ description: "Opaque pagination cursor" }),
|
|
56613
56686
|
all: flag.boolean({ description: "Fetch all pages" }),
|
|
56614
|
-
version: flag.number({ description: "Specific version number" })
|
|
56687
|
+
version: flag.number({ description: "Specific version number" }),
|
|
56688
|
+
...collectionReadShapeFlag
|
|
56615
56689
|
};
|
|
56616
56690
|
var collectionContainsFlags = {
|
|
56617
56691
|
position: flag.number({
|
|
@@ -56620,7 +56694,8 @@ var collectionContainsFlags = {
|
|
|
56620
56694
|
version: flag.number({
|
|
56621
56695
|
description: "Specific collection version number. Member inputs are still pinned before comparison; use pinned @vN members for historical membership checks."
|
|
56622
56696
|
}),
|
|
56623
|
-
...collectionInputFlags
|
|
56697
|
+
...collectionInputFlags,
|
|
56698
|
+
...collectionReadShapeFlag
|
|
56624
56699
|
};
|
|
56625
56700
|
var collectionDiffFlags = {
|
|
56626
56701
|
mode: flag.string({
|
|
@@ -56631,7 +56706,8 @@ var collectionDiffFlags = {
|
|
|
56631
56706
|
}),
|
|
56632
56707
|
"right-version": flag.number({
|
|
56633
56708
|
description: "Specific right collection version"
|
|
56634
|
-
})
|
|
56709
|
+
}),
|
|
56710
|
+
...collectionReadShapeFlag
|
|
56635
56711
|
};
|
|
56636
56712
|
var collectionReviseFlags = {
|
|
56637
56713
|
add: flag.string({
|
|
@@ -56647,7 +56723,8 @@ var collectionReviseFlags = {
|
|
|
56647
56723
|
...commonWriteFlags
|
|
56648
56724
|
};
|
|
56649
56725
|
var collectionStatsFlags = {
|
|
56650
|
-
version: flag.number({ description: "Specific collection version number" })
|
|
56726
|
+
version: flag.number({ description: "Specific collection version number" }),
|
|
56727
|
+
...collectionReadShapeFlag
|
|
56651
56728
|
};
|
|
56652
56729
|
function validateCollectionType(value) {
|
|
56653
56730
|
const parsed = SUPPORTED_COLLECTION_TYPES.find((candidate) => candidate === value);
|
|
@@ -56662,7 +56739,7 @@ function validateDiffMode(value) {
|
|
|
56662
56739
|
if (value === "auto" || value === "membership" || value === "ordered") {
|
|
56663
56740
|
return value;
|
|
56664
56741
|
}
|
|
56665
|
-
usageError("--mode must be one of: auto, membership, ordered", "wh collection diff Set/a Set/b --mode membership");
|
|
56742
|
+
return usageError("--mode must be one of: auto, membership, ordered", "wh collection diff Set/a Set/b --mode membership");
|
|
56666
56743
|
}
|
|
56667
56744
|
function collectionQuerySourceFromFlags(flags) {
|
|
56668
56745
|
const where = (flags.where ?? []).map(parseWhereFlag);
|
|
@@ -56702,9 +56779,6 @@ function requireSetForQuerySource(type, source, example) {
|
|
|
56702
56779
|
return;
|
|
56703
56780
|
usageError("Selector-backed collection sources are only supported for set collections", example);
|
|
56704
56781
|
}
|
|
56705
|
-
function normalizeCreateMembers(type, members) {
|
|
56706
|
-
return type === "set" ? Array.from(new Set(members)) : members;
|
|
56707
|
-
}
|
|
56708
56782
|
function hasDeferredMemberSource(flags) {
|
|
56709
56783
|
return !!flags.file || !!flags.stdin;
|
|
56710
56784
|
}
|
|
@@ -56766,7 +56840,7 @@ var handleCollectionCreate = async (ctx, { flags, args }) => {
|
|
|
56766
56840
|
}) : undefined;
|
|
56767
56841
|
const eventRequestId = flags["event-request-id"] ?? createOperationEventRequestId();
|
|
56768
56842
|
ctx.status(`Operation event request: ${eventRequestId}`);
|
|
56769
|
-
const inlineMembers =
|
|
56843
|
+
const inlineMembers = parseMemberList(flags.members);
|
|
56770
56844
|
if (flags["skip-existing"] && !queryBacked && inlineMembers.length === 0 && hasDeferredMemberSource(flags)) {
|
|
56771
56845
|
try {
|
|
56772
56846
|
const result2 = await ctx.client.collection.create(org, repo, {
|
|
@@ -56792,7 +56866,7 @@ var handleCollectionCreate = async (ctx, { flags, args }) => {
|
|
|
56792
56866
|
wrefField: flags["wref-field"],
|
|
56793
56867
|
label: "collection members"
|
|
56794
56868
|
});
|
|
56795
|
-
const members =
|
|
56869
|
+
const members = explicitMembers;
|
|
56796
56870
|
if (sourceRepo && members.length > 0) {
|
|
56797
56871
|
usageError("--source-repo cannot be combined with explicit members; use canonical wh:org/repo/... member wrefs or omit --source-repo.", "wh collection create --type set --name wake-voters --source-repo data/nc-voters --shape Voter --where county=Wake");
|
|
56798
56872
|
}
|
|
@@ -56861,12 +56935,13 @@ var handleCollectionMembers = async (ctx, { flags, args }) => {
|
|
|
56861
56935
|
fetchPage: (cursor) => ctx.client.collection.members(org, repo, wref, {
|
|
56862
56936
|
version: snapshotVersion,
|
|
56863
56937
|
limit: pageLimit,
|
|
56864
|
-
cursor
|
|
56938
|
+
cursor,
|
|
56939
|
+
shape: flags.shape
|
|
56865
56940
|
}),
|
|
56866
56941
|
title: "Collection members"
|
|
56867
56942
|
})) {
|
|
56868
56943
|
firstPage ??= {
|
|
56869
|
-
|
|
56944
|
+
shape: page.shape,
|
|
56870
56945
|
wref: page.wref,
|
|
56871
56946
|
version: page.version
|
|
56872
56947
|
};
|
|
@@ -56875,7 +56950,7 @@ var handleCollectionMembers = async (ctx, { flags, args }) => {
|
|
|
56875
56950
|
snapshotVersion ??= page.version;
|
|
56876
56951
|
}
|
|
56877
56952
|
writeCollectionMembersOutput(ctx, withDecorations({
|
|
56878
|
-
|
|
56953
|
+
shape: firstPage?.shape ?? flags.shape ?? "",
|
|
56879
56954
|
wref: firstPage?.wref ?? wref,
|
|
56880
56955
|
version: snapshotVersion ?? firstPage?.version ?? flags.version ?? 1,
|
|
56881
56956
|
items,
|
|
@@ -56886,7 +56961,8 @@ var handleCollectionMembers = async (ctx, { flags, args }) => {
|
|
|
56886
56961
|
const result = await ctx.client.collection.members(org, repo, wref, {
|
|
56887
56962
|
version: flags.version,
|
|
56888
56963
|
limit: boundedLimit,
|
|
56889
|
-
cursor: flags.cursor
|
|
56964
|
+
cursor: flags.cursor,
|
|
56965
|
+
shape: flags.shape
|
|
56890
56966
|
});
|
|
56891
56967
|
if (result.nextCursor) {
|
|
56892
56968
|
emitPartialPageHint(ctx, result.items.length, result.nextCursor, boundedLimit);
|
|
@@ -56901,7 +56977,7 @@ function writeCollectionMembersOutput(ctx, result, page) {
|
|
|
56901
56977
|
if (ctx.format === "json") {
|
|
56902
56978
|
const envelope = pageEnvelope(result.items, page);
|
|
56903
56979
|
printJson(ctx.out, {
|
|
56904
|
-
|
|
56980
|
+
shape: result.shape,
|
|
56905
56981
|
wref: result.wref,
|
|
56906
56982
|
version: result.version,
|
|
56907
56983
|
items: result.items,
|
|
@@ -56933,7 +57009,8 @@ var handleCollectionContains = async (ctx, { flags, args }) => {
|
|
|
56933
57009
|
const { org, repo } = parseCollectionReadRepo(ctx, [wref]);
|
|
56934
57010
|
const result = await ctx.client.collection.contains(org, repo, wref, members, {
|
|
56935
57011
|
version: flags.version,
|
|
56936
|
-
position: flags.position
|
|
57012
|
+
position: flags.position,
|
|
57013
|
+
shape: flags.shape
|
|
56937
57014
|
});
|
|
56938
57015
|
writeOutput(ctx, result, () => renderContains(ctx, result));
|
|
56939
57016
|
};
|
|
@@ -56946,7 +57023,8 @@ var handleCollectionDiff = async (ctx, { flags, args }) => {
|
|
|
56946
57023
|
const result = await ctx.client.collection.diff(org, repo, leftWref, rightWref, {
|
|
56947
57024
|
leftVersion: flags["left-version"],
|
|
56948
57025
|
rightVersion: flags["right-version"],
|
|
56949
|
-
mode: validateDiffMode(flags.mode)
|
|
57026
|
+
mode: validateDiffMode(flags.mode),
|
|
57027
|
+
shape: flags.shape
|
|
56950
57028
|
});
|
|
56951
57029
|
writeOutput(ctx, result, () => renderDiff(ctx, result));
|
|
56952
57030
|
};
|
|
@@ -57017,7 +57095,8 @@ var handleCollectionStats = async (ctx, { flags, args }) => {
|
|
|
57017
57095
|
}
|
|
57018
57096
|
const { org, repo } = parseCollectionReadRepo(ctx, [wref]);
|
|
57019
57097
|
const result = await ctx.client.collection.stats(org, repo, wref, {
|
|
57020
|
-
version: flags.version
|
|
57098
|
+
version: flags.version,
|
|
57099
|
+
shape: flags.shape
|
|
57021
57100
|
});
|
|
57022
57101
|
writeOutput(ctx, result, () => renderStats(ctx, result));
|
|
57023
57102
|
};
|
|
@@ -57266,7 +57345,7 @@ var createFlags3 = {
|
|
|
57266
57345
|
multiple: true
|
|
57267
57346
|
}),
|
|
57268
57347
|
type: flag.string({
|
|
57269
|
-
description: "
|
|
57348
|
+
description: "set, list, or the legacy deprecated arc, bond, pair. Set/List land as ordinary Things under their protected V2 Shapes; arc/bond/pair are accepted during the compatibility window and lowered to ordinary Things."
|
|
57270
57349
|
}),
|
|
57271
57350
|
name: flag.string({
|
|
57272
57351
|
description: "collection name for --type shorthand"
|
|
@@ -57300,27 +57379,29 @@ function identifyCommitSubmitStreamRow(row) {
|
|
|
57300
57379
|
// ../../packages/warmhub-cli/src/domains/commit-submit-template.ts
|
|
57301
57380
|
import { writeFile } from "node:fs/promises";
|
|
57302
57381
|
var WRITE_TEMPLATE_KINDS = ["thing", "assertion"];
|
|
57303
|
-
|
|
57304
|
-
|
|
57305
|
-
|
|
57306
|
-
|
|
57307
|
-
|
|
57308
|
-
|
|
57309
|
-
|
|
57310
|
-
|
|
57311
|
-
|
|
57312
|
-
|
|
57313
|
-
|
|
57314
|
-
}
|
|
57315
|
-
|
|
57316
|
-
if (!isBuiltinCollectionShape(shapeName) || shapeName === "Pair") {
|
|
57317
|
-
return;
|
|
57382
|
+
async function readTemplateShape(ctx, org, repo, shapeName) {
|
|
57383
|
+
try {
|
|
57384
|
+
const shape = await ctx.client.shape.get(org, repo, shapeName);
|
|
57385
|
+
if ((shapeName === "Set" || shapeName === "List") && shape.componentRef !== "warmhub/system") {
|
|
57386
|
+
return;
|
|
57387
|
+
}
|
|
57388
|
+
return shape;
|
|
57389
|
+
} catch (error51) {
|
|
57390
|
+
const code = error51.code;
|
|
57391
|
+
if ((shapeName === "Set" || shapeName === "List") && code === "NOT_FOUND") {
|
|
57392
|
+
return;
|
|
57393
|
+
}
|
|
57394
|
+
throw error51;
|
|
57318
57395
|
}
|
|
57319
|
-
return COLLECTION_TEMPLATE_SPECS[shapeName];
|
|
57320
57396
|
}
|
|
57321
57397
|
function zeroValueForField(fieldSpec) {
|
|
57322
57398
|
if (Array.isArray(fieldSpec))
|
|
57323
57399
|
return [];
|
|
57400
|
+
const arraySpec = fieldSpec;
|
|
57401
|
+
if (isTypeSpecObject(fieldSpec) && arraySpec.type === "array" && typeof arraySpec.minItems === "number") {
|
|
57402
|
+
const item = zeroValueForField(arraySpec.items);
|
|
57403
|
+
return Array.from({ length: Math.max(0, arraySpec.minItems) }, () => item);
|
|
57404
|
+
}
|
|
57324
57405
|
const primitiveType = primitiveTypeSpecFromFieldSpec(fieldSpec);
|
|
57325
57406
|
if (primitiveType) {
|
|
57326
57407
|
const isOptional = primitiveType.endsWith("?");
|
|
@@ -57415,32 +57496,31 @@ var handleTemplate = async (ctx, { flags, args }) => {
|
|
|
57415
57496
|
const count = Math.max(1, flags.count ?? 1);
|
|
57416
57497
|
const operations = [];
|
|
57417
57498
|
for (const shapeName of shapeNames) {
|
|
57418
|
-
const collectionTemplate = templateKind === "thing" ? collectionTemplateSpec(shapeName) : undefined;
|
|
57419
|
-
const operationKind = collectionTemplate ? "collection" : templateKind;
|
|
57420
57499
|
if (operationType === "retract") {
|
|
57421
57500
|
for (let i = 0;i < count; i++) {
|
|
57422
57501
|
operations.push({
|
|
57423
57502
|
operation: "retract",
|
|
57424
|
-
kind:
|
|
57425
|
-
name:
|
|
57503
|
+
kind: templateKind,
|
|
57504
|
+
name: templateKind === "shape" ? shapeName : `${shapeName}/FILL_IN`
|
|
57426
57505
|
});
|
|
57427
57506
|
}
|
|
57428
57507
|
continue;
|
|
57429
57508
|
}
|
|
57430
57509
|
const nameSuffix = count > 1 ? (i) => `my-${shapeName.toLowerCase()}-${i + 1}` : () => `my-${shapeName.toLowerCase()}`;
|
|
57431
|
-
|
|
57510
|
+
const shape = await readTemplateShape(ctx, org, repo, shapeName);
|
|
57511
|
+
if (shape === undefined) {
|
|
57512
|
+
const type = shapeName === "Set" ? "set" : "list";
|
|
57432
57513
|
for (let i = 0;i < count; i++) {
|
|
57433
57514
|
operations.push({
|
|
57434
57515
|
operation: operationType,
|
|
57435
57516
|
kind: "collection",
|
|
57436
|
-
type
|
|
57517
|
+
type,
|
|
57437
57518
|
name: operationType === "add" ? nameSuffix(i) : `${shapeName}/FILL_IN`,
|
|
57438
|
-
members: [
|
|
57519
|
+
members: ["Shape/FILL_IN"]
|
|
57439
57520
|
});
|
|
57440
57521
|
}
|
|
57441
57522
|
continue;
|
|
57442
57523
|
}
|
|
57443
|
-
const shape = await ctx.client.shape.get(org, repo, shapeName);
|
|
57444
57524
|
const shapeVersion = shape.version;
|
|
57445
57525
|
const shapeData = shapeVersion?.data;
|
|
57446
57526
|
const fields = shapeData?.fields ?? {};
|
|
@@ -57643,7 +57723,7 @@ var SOURCE_COMMAND_EXAMPLES = {
|
|
|
57643
57723
|
"--add": "wh commit submit --add Proof/example --data '{}' -m 'Add Proof/example' --repo acme/world",
|
|
57644
57724
|
"--revise": "wh commit submit --revise Proof/example --data '{}' -m 'Revise Proof/example' --repo acme/world",
|
|
57645
57725
|
"--retract": "wh commit submit --retract Proof/example -m 'Retract Proof/example' --repo acme/world",
|
|
57646
|
-
"--type":
|
|
57726
|
+
"--type": `wh commit submit --add route --shape Arc --data '{"from":"Location/a","to":"Location/b"}' -m 'Add route' --repo acme/world`
|
|
57647
57727
|
};
|
|
57648
57728
|
function resolveCommitOperationSource(input) {
|
|
57649
57729
|
const selected = SOURCE_FLAGS.filter(([, key]) => input[key]).map(([flag2]) => flag2);
|
|
@@ -58447,11 +58527,10 @@ var handleSubmit = async (ctx, { flags, args }) => {
|
|
|
58447
58527
|
}
|
|
58448
58528
|
return parsed;
|
|
58449
58529
|
});
|
|
58450
|
-
const validCollectionTypes = ["arc", "bond", "
|
|
58451
|
-
const canonicalCollectionTypes2 = ["arc", "bond", "set", "list"];
|
|
58530
|
+
const validCollectionTypes = ["arc", "bond", "pair", "set", "list"];
|
|
58452
58531
|
const collectionType = validCollectionTypes.find((candidate) => candidate === flags.type);
|
|
58453
58532
|
if (flags.type !== undefined && collectionType === undefined) {
|
|
58454
|
-
throw new CliError(2 /* UserInput */, "USER_INPUT", `Invalid --type "${flags.type}". Use one of: ${
|
|
58533
|
+
throw new CliError(2 /* UserInput */, "USER_INPUT", `Invalid --type "${flags.type}". Use one of: ${validCollectionTypes.join(", ")}`, undefined, "wh commit submit --type set --name group --members Location/a,Location/b");
|
|
58455
58534
|
}
|
|
58456
58535
|
const jsonlFile = opsFile?.endsWith(".jsonl") === true;
|
|
58457
58536
|
const operationSource = resolveCommitOperationSource({
|
|
@@ -58495,10 +58574,10 @@ var handleSubmit = async (ctx, { flags, args }) => {
|
|
|
58495
58574
|
} else if (operationSource === "--type") {
|
|
58496
58575
|
const selectedCollectionType = requireCommitSourceValue(operationSource, collectionType);
|
|
58497
58576
|
if (!flags.name) {
|
|
58498
|
-
usageError("Usage: wh commit submit --type <arc|bond|set|list> --name <collection-name> --members <wref1,wref2,...>", "wh commit submit --type
|
|
58577
|
+
usageError("Usage: wh commit submit --type <arc|bond|pair|set|list> --name <collection-name> --members <wref1,wref2,...>", "wh commit submit --type set --name group --members Location/a,Location/b");
|
|
58499
58578
|
}
|
|
58500
58579
|
if (!flags.members) {
|
|
58501
|
-
usageError("Usage: wh commit submit --type <arc|bond|set|list> --name <collection-name> --members <wref1,wref2,...>", "wh commit submit --type
|
|
58580
|
+
usageError("Usage: wh commit submit --type <arc|bond|pair|set|list> --name <collection-name> --members <wref1,wref2,...>", "wh commit submit --type set --name group --members Location/a,Location/b");
|
|
58502
58581
|
}
|
|
58503
58582
|
const members = flags.members.split(",").map((m) => m.trim()).filter(Boolean);
|
|
58504
58583
|
const arityMap = { arc: 2, bond: 2, pair: 2 };
|
|
@@ -58660,7 +58739,7 @@ var handleSubmit = async (ctx, { flags, args }) => {
|
|
|
58660
58739
|
renderPartialStreamSubmission(ctx, error51, completedAllFailed ? undefined : { committer });
|
|
58661
58740
|
}
|
|
58662
58741
|
const recovered = toCliError(error51);
|
|
58663
|
-
throw new CliError(recovered.code, recovered.kind, recovered.message, error51, `${receiptLookupCommand(org, repo, error51.eventRequestId)} ${recovered.hint ?? ""}`.trim(), undefined, recovered.
|
|
58742
|
+
throw new CliError(recovered.code, recovered.kind, recovered.message, error51, `${receiptLookupCommand(org, repo, error51.eventRequestId)} ${recovered.hint ?? ""}`.trim(), undefined, recovered.errorCode, recovered.recovery);
|
|
58664
58743
|
}
|
|
58665
58744
|
throw error51;
|
|
58666
58745
|
}
|
|
@@ -58981,8 +59060,8 @@ var COMMIT_DOMAIN = defineDomain({
|
|
|
58981
59060
|
'wh commit submit --file dataset.jsonl --stream-id bulk-2026-06-04 --skip-existing --progress -m "bulk stream"',
|
|
58982
59061
|
'wh commit submit --file dataset.jsonl --server-stream --stream-id bulk-2026-08-14 --group-size 1000 --format jsonl -m "server stream"',
|
|
58983
59062
|
"wh shape template Session HypothesisCandidate -o ops.json",
|
|
58984
|
-
|
|
58985
|
-
|
|
59063
|
+
`wh commit submit --add route --shape Arc --data '{"from":"Location/a","to":"Location/b"}'`,
|
|
59064
|
+
`wh commit submit --add peers --shape Bond --data '{"ends":["Person/alice","Person/bob"]}'`,
|
|
58986
59065
|
'wh commit submit --type set --name active-locations --members Location/a,Location/b,Location/c -m "Create location set"'
|
|
58987
59066
|
],
|
|
58988
59067
|
notes: [
|
|
@@ -59595,39 +59674,6 @@ var registryUpdateFlags = {
|
|
|
59595
59674
|
// ../../packages/warmhub-cli/src/domains/component-handlers.ts
|
|
59596
59675
|
import { resolve as resolve2 } from "node:path";
|
|
59597
59676
|
|
|
59598
|
-
// ../../packages/warmhub-cli/src/domain-rename-hints.ts
|
|
59599
|
-
var RENAME_HINT_MAP = {
|
|
59600
|
-
"commit:create": "Renamed to 'wh commit submit'",
|
|
59601
|
-
"commit:template": "Moved to 'wh shape template'",
|
|
59602
|
-
graph: "Moved to 'wh thing graph'",
|
|
59603
|
-
"org:add-member": "Use 'wh org member add'",
|
|
59604
|
-
"org:remove-member": "Use 'wh org member remove'",
|
|
59605
|
-
"org:list-members": "Use 'wh org member list'",
|
|
59606
|
-
"org:change-role": "Use 'wh org member set-role'",
|
|
59607
|
-
"thing:get-many": "Renamed; 'wh thing view' is now variadic",
|
|
59608
|
-
"credential:set-keys": "Folded into 'wh credential set'",
|
|
59609
|
-
"credential:export": {
|
|
59610
|
-
message: "'wh credential export' was removed; it has no direct CLI replacement.",
|
|
59611
|
-
hint: "Webhook subscriptions now auto-inject WEBHOOK_* keys (WEBHOOK_BEARER_TOKEN, WEBHOOK_API_KEY[+ _HEADER], WEBHOOK_BASIC_USERNAME/PASSWORD, WEBHOOK_SIGNING_SECRET) as auth headers — store them on a credential set then bind with 'wh sub bind <subscriptionName> --credentials <setName>'. Generic key names (e.g. API_KEY) are not forwarded."
|
|
59612
|
-
},
|
|
59613
|
-
"shape:delete": "Use 'wh shape retract'",
|
|
59614
|
-
"init:run": "Use 'wh init' (no inner verb)",
|
|
59615
|
-
"prime:run": "Use 'wh prime'",
|
|
59616
|
-
"use:run": "Use 'wh use'",
|
|
59617
|
-
"graph:run": "Use 'wh thing graph'",
|
|
59618
|
-
"doctor:check": "Use 'wh doctor'",
|
|
59619
|
-
"doctor:run": "Use 'wh doctor'",
|
|
59620
|
-
"channel:start": "Use 'wh channel'",
|
|
59621
|
-
"notifications:list": "Use 'wh notifications'"
|
|
59622
|
-
};
|
|
59623
|
-
var RENAME_HINTS = RENAME_HINT_MAP;
|
|
59624
|
-
function resolveRenameHint(entry) {
|
|
59625
|
-
return typeof entry === "string" ? { message: entry } : entry;
|
|
59626
|
-
}
|
|
59627
|
-
function getTopLevelRenameHintCommands() {
|
|
59628
|
-
return Object.keys(RENAME_HINTS).filter((key) => !key.includes(":"));
|
|
59629
|
-
}
|
|
59630
|
-
|
|
59631
59677
|
// ../../packages/warmhub-cli/src/builtin-cli-domains.ts
|
|
59632
59678
|
var _names = null;
|
|
59633
59679
|
var EXTRA_TOP_LEVEL_COMMANDS = ["help"];
|
|
@@ -59636,11 +59682,7 @@ function ensureNames() {
|
|
|
59636
59682
|
return _names;
|
|
59637
59683
|
const registry3 = new DomainRegistry;
|
|
59638
59684
|
registerAllDomains(registry3);
|
|
59639
|
-
_names = new Set([
|
|
59640
|
-
...registry3.getDomainNames(),
|
|
59641
|
-
...EXTRA_TOP_LEVEL_COMMANDS,
|
|
59642
|
-
...getTopLevelRenameHintCommands()
|
|
59643
|
-
]);
|
|
59685
|
+
_names = new Set([...registry3.getDomainNames(), ...EXTRA_TOP_LEVEL_COMMANDS]);
|
|
59644
59686
|
return _names;
|
|
59645
59687
|
}
|
|
59646
59688
|
function isBuiltinCliDomain(name) {
|
|
@@ -61985,8 +62027,7 @@ function parseRecipient(kind, name) {
|
|
|
61985
62027
|
...resolveRegisteredComponentRef(name, CREATE_USAGE, CREATE_EXAMPLE)
|
|
61986
62028
|
};
|
|
61987
62029
|
default:
|
|
61988
|
-
usageError("Grant recipient kind must be member, pat, or component.", CREATE_EXAMPLE);
|
|
61989
|
-
throw new Error("usageError must throw");
|
|
62030
|
+
return usageError("Grant recipient kind must be member, pat, or component.", CREATE_EXAMPLE);
|
|
61990
62031
|
}
|
|
61991
62032
|
}
|
|
61992
62033
|
function isPatternList(value) {
|
|
@@ -62959,7 +63000,7 @@ var ORG_DOMAIN = defineDomain({
|
|
|
62959
63000
|
});
|
|
62960
63001
|
|
|
62961
63002
|
// ../../packages/warmhub-cli/src/domains/prime-content.md
|
|
62962
|
-
var prime_content_default = "# WarmHub CLI Context\n> **Context Recovery**: Run `wh prime` after compaction or new session\n\n## Environment\n{{REPO_LINE}}\n\n## Core Concepts\n- **Thing**: A named entity versioned by writes. **Assertion**: A thing that makes a shape-validated claim about another thing.\n- **Shape**: A thing defining data structure; every other thing has one. **Write**: One or more add/revise/retract operations with per-operation results.\n- **wref**: A reference to a thing. Local: `Player` (the shape) or `Player/alice` (a thing with that shape). Cross-repo: `wh:org/repo/Shape` or `wh:org/repo/Shape/name`.\n\n## Versioned Wrefs\n- `Shape` addresses the shape itself; `Shape/name` addresses a thing with that shape. `@vN` pins either.\n- Floating write refs to retracted targets fail; existing pinned versions remain valid.\n- Rename invalidates old spellings, including `@vN`; the new name resolves history.\n- Untyped wrefs accept any thing. `wref<T>` requires the target's shape to be `T`; a shape has no shape, so never satisfies it. `wref?` coalesces only `thing_absent`, never a missing shape.\n- Wref `binding`: `identity` follows the Thing, `versioned` pins.\n\n## Key Workflows\n\n**Write data** (discover shapes → scaffold ops → submit):\n```bash\nwh shape list --repo org/repo # list available shapes\nwh shape view ShapeName --repo org/repo # inspect fields\nwh shape template ShapeName -o ops.json --repo org/repo # scaffold write ops (supports --kind assertion)\n# edit ops.json — fill FILL_IN placeholders — then:\nwh commit submit --file ops.json --dry-run --repo org/repo # preview; remove --dry-run to submit\n# or single assertion (no file needed):\nwh assertion create --shape ShapeName --about Target/name --name my-assertion --data '{\"field\":1}' --repo org/repo\n# Relay failed operation details when present. Never hand-guess ops JSON — use `wh shape template <Shape>`.\n```\n\n**Read data:**\n```bash\nwh thing list --repo org/repo # all things at HEAD\nwh thing view Shape/name --repo org/repo # inspect a thing\nwh thing query --shape MyShape --repo org/repo # find things by shape\nwh thing about Shape --repo org/repo # assertions about a shape\nwh assertion list --repo org/repo # all assertions at HEAD\nwh thing history Shape/name --repo org/repo # version history\n\n# Batch read — wh thing view is variadic (max 500 wrefs/call):\nwh thing view Player/alice Player/bob # variadic positionals\nwh thing view --file wrefs.txt --json # one wref per line\ncat wrefs.txt | wh thing view --format jsonl # one JSON line per *deduped* requested wref\n```\n\n## Wref Quick Reference\n\nWrites use explicit names and wrefs. Untyped fields, collection members,\nassertion `about`, and committers accept any thing. Create a deterministic\ntarget before referencing it in the same commit.\n\n## Command Reference\n\n**Global flags**: `--repo`, `--format`, `--json`, `--live`\n### thing — Things\n- `wh thing list [--shape] [--kind] [--match] [--include-retracted]` — Current HEAD state\n- `wh thing view [<wref>...] [--file <path>] [--version] [--depth] [--include-retracted] [--data-mode auto|full]` — Thing details. Variadic (max 500). `--version` implies `--include-retracted`. Batch JSON returns `{ requested, items, missing }`; jsonl emits one row per deduped requested wref. Large Set/List bodies summarize by default; use `--data-mode full` for canonical collection JSON.\n- `wh thing history [wref] [--shape] [--about] [--include-retracted]` — Version history\n- `wh thing resolve <wref>` — Resolve a wref to its canonical thing identity\n- `wh thing create <name|Shape/name> (--data|--file) [--shape]` — Create\n- `wh thing revise <name> [--data] [--message] [--committer] [--expected-version]` — Revise (CONFLICT if HEAD≠n)\n- `wh thing retract <wref> -m <message> [--reason] [--kind] [--expected-version]` — Retract\n- `wh thing query [--shape] [--kind] [--about] [--match]` — Query by filters\n- `wh thing search <query> [--shape] [--kind] [--about] [--mode]` — Search text\n- `wh thing rename <Shape/oldName> <newName>` — Rename\n- `wh thing refs <wref> [--inbound] [--outbound] [--field]` — Show field references; use `wh thing about` for assertions about the target thing\n- `wh thing about <wref> [--shape] [--match] [--depth] [--resolve-collections] [--role from|to|ends] [--limit] [--include-retracted]` — Show assertions about the target identity; `--resolve-collections` expands bare/@HEAD/@ALL members, `--role` filters direction; not pinned @vN\n\n- `wh view evaluate VIEW [--limit N] [--cursor TOK] [--all]`\n### commit — Write operations\n- `wh commit submit [--ops|--file|--add|--revise|--retract] [--dry-run] [--skip-existing]` — Submit operations, or evaluate the complete bounded input without durable changes under `--dry-run`. JSONL preview emits one operation row per input plus one summary.\n- `wh shape template <shape> [shape2 ...] [--kind] [--operation add|revise|retract] [-o file]` — Generate sample ops\n\n### assertion — Assertion operations\n- `wh assertion list [--about wref] [--shape] [--match] [--include-retracted]` — Browse assertions\n- `wh assertion view <wref> [--version] [--include-retracted]` — Assertion details\n- `wh assertion create --shape <s> --name <n> --about <wref> [--data] [-m] [--committer]` — Create assertion\n- `wh assertion revise <wref> --data <json> [--message] [--committer]` — Revise assertion\n- `wh assertion retract <wref> -m <message> [--reason] [--committer] [--expected-version]` — Retract assertion\n- `wh assertion history <wref> [--include-retracted]` — Assertion history\n\n### shape — Shape management\n- `wh shape list [--match] [--include-retracted]` — List all shapes\n- `wh shape view <name> [--include-retracted]` — Shape details\n- `wh shape revise <name> (--fields|--file)`\n- `wh shape create <name> (--fields|--file)`\n- `wh shape retract <name> -m <message> [--reason] [--expected-version]` — Retract shape\n- `wh shape history <name> [--include-retracted]` — Shape history\n- `wh shape rename <oldName> <newName>` — Rename shape\n\n### repo — Repository management\n- `wh repo create <org/name> [--display-name] [--description] [--visibility]` — Create repo\n- `wh repo list [org]` — List repos\n- `wh repo view [org/repo]` — Repo details\n\n### org — Organization management\n- `wh org create <name> [--display-name]` — Create a new organization\n- `wh org view <name>` — View organization details (alias: info)\n- `wh org list` — List all organizations\n\n### sub — Subscription management\n- `wh sub create <name> [flags]` — Create a subscription\n- `wh sub view <name>` — View subscription details\n- `wh sub list` — List all subscriptions\n- `wh sub log <name>` — Tail subscription delivery feed\n- `wh sub attempts <runId>` — Show attempt history for a run\n- `wh sub pause <name>` — Pause a subscription\n- `wh sub resume <name>` — Resume a paused subscription\n- `wh sub bind <name> [--credentials]` — Bind a credential set to a subscription for webhook auth\n- `wh sub unbind <name>` — Remove credential binding from a subscription\n- `wh sub delete <name>` — Retire; name reserved\n\n### notifications — Action notification listing\n- `wh notifications [--limit] [--since]` — List repo-scoped action notifications\n\n### credential — Credential set management\n- `wh credential create <name> [--repo org/repo | --org org] [--scope] [--description]` — Create an empty credential set\n- `wh credential list [--repo org/repo | --org org]` — List credential sets accessible from a repo or org\n- `wh credential view <name> [--repo org/repo | --org org]` — View a credential set (key names only, no values)\n- `wh credential delete <name> [--repo org/repo | --org org]` — Delete a credential set and its Vault object\n- `wh credential set <setName> [<keyName>] [--repo org/repo | --org org] [--value]` — Set credential key(s). With `<keyName>`: single-key form (reads value from `--value` or stdin). Without `<keyName>`: batch form (reads JSON object from stdin, e.g. `{\"KEY\":\"val\"}`)\n- `wh credential unset <setName> <keyName> [--repo org/repo | --org org]` — Remove a key from a credential set\n- `wh credential audit <setName> [--repo org/repo | --org org]` — View audit log for a credential set\n- `wh credential revoke <setName> [--repo org/repo | --org org] [--reason]` — Revoke a credential set (blocks new binds and stops bound webhook deliveries)\n\n### component — Component management\n- `wh component validate <path>` — Validate package\n- `wh component install <org/name>` — Install a registered component\n- `wh component register <name> --org <org> --manifest <path> [flags]` — Register component identity\n- `wh component unregister <org/name>` — Remove a registered component identity\n- `wh component registry list --org <org>` — List registered components\n- `wh component registry view <org/name>` — View a registered component\n- `wh component registry update <org/name> [flags]` — Update a registered component\n- `wh component list` — List installed components\n- `wh component update <org/name>` — Update installed component\n- `wh component view <org/name>` — Show component details (alias: show)\n- `wh component doctor <org/name>` — Run component health checks\n- `wh component teardown <org/name>` — Pause component subscriptions\n\n### Getting More Info\n- `wh help` — help overview\n- `wh <domain>` — domain verbs\n- `wh <domain> <verb> --help` — verb flags and examples\n- `wh help --format json` — `CliSpecV2` (`schemaVersion: 2`): global/contextual/root tables and command overrides\n\n## Common Workflows\n\n**Explore a repo:**\n```bash\nwh thing list --repo org/repo # see all things in HEAD\nwh thing view Shape/name --repo org/repo # inspect a specific thing\nwh thing history Shape/name --repo org/repo # inspect version history\nwh thing about Shape/name # assertions about thing/shape\n```\n\n**Create an assertion** (most common write):\n```bash\n# --about takes an untyped target wref: Shape or Shape/name.\nwh assertion create --shape MyShape --about TargetShape/target-name \\\n --name my-assertion --data '{\"field_a\":1,\"field_b\":\"value\"}' --repo org/repo\n# Output includes per-operation status; relay failures when present.\n```\n\n**Create via write entrypoint** (alternative, supports batches and streams):\n```bash\nwh commit submit --add my-item --shape MyShape --kind assertion \\\n --about TargetShape/target-name --data '{\"field_a\":1}' --repo org/repo\n```\n\n**Batch write via file** (generate template → edit → submit):\n```bash\nwh shape template Hypothesis Evidence -o ops.json # add --kind assertion --about TargetShape/name for assertions\n# edit ops.json — fill FILL_IN placeholders\nwh commit submit --file ops.json -m \"batch update\" # submit all operations (bare `wh commit` is equivalent)\n# --file format: docs.warmhub.ai/cli-reference/commit-operations\n```\n\n**Bulk write (JSONL stream, >1k ops)** — one chunked stream beats per-record commits (~60× faster):\n```bash\nwh shape template MyShape -o ops.jsonl # one op per line (.jsonl)\nID=\"bulk-$(date +%s)\" # caller id for chunk correlation\nwh commit submit --file ops.jsonl --stream-id \"$ID\" --chunk-size 5000 \\\n --skip-existing --progress -m \"bulk ingest\" --repo org/repo\n# --chunk-size: ops per append chunk (default 1000, max 10000); chunk≈1 is ~60× slower\n# --skip-existing: skips already-written add ops (drops per-row read-before-write)\n# --stream-id identifies the submission but provides no receipt or resume.\n# After an outcome-unknown append, stop writes and reconcile attempted + unsent\n# work from a later verified checkpoint; never blindly replay revise/retract.\n```\n\n**Create collections:**\n```bash\nwh commit submit --type arc --name route --members Location/a,Location/b --repo org/repo\nwh assertion create --shape Supports --name route-support --about Arc/route --data '{\"confidence\":0.8}' --repo org/repo\n```\n\n**Modify data:**\n```bash\nwh thing revise Shape/name --data '{\"x\":5,\"y\":3}' -m \"update\" --repo org/repo\nwh thing retract Shape/old-item -m \"withdrawn\" --reason \"data feed contaminated\" --repo org/repo\n```\n\n**Query and filter:**\n```bash\nwh thing query --shape MyShape # by shape\nwh thing query --kind assertion --about Shape/name # by kind + target\nwh thing history Shape/name --limit 10 # version history\n```\n\n## Built-in Content shape\n\nWarmHub repos expose three well-known content wrefs:\n- `Content/Readme` — stored markdown for humans\n- `Content/Agents` — stored markdown guidance for AI agents\n- `Content/LlmsTxt` — synthesized per-request sitemap (read-only)\n\nFetch via `wh repo content get --kind readme|agents|llms-txt`,\n`client.repo.getReadme/getAgents/getLlmsTxt`, MCP `warmhub_repo_content_get`,\nor raw HTTP `GET /{org}/{repo}/readme.md|agents.md|llms.txt`.\nSee `wh repo describe` → `additionalInformation` for the discovery field.\n\n## Query Discipline\n- Plan the repo, shapes, and wrefs you need before the first query.\n- Gather the needed facts from one repo before switching to another.\n- Do the queries first, then write one complete answer.\n\n## Agent Tips\n- **Always run commands for live data** — this context describes the CLI, not repo contents\n- **Before writing, discover wrefs** — run `wh thing list` or `wh shape list`\n- **Shape field types**: `string`, `number`, `boolean`, `wref`, arrays, optionals, nested objects\n- **Write commands return per-operation results** — relay failures and affected wrefs to the user\n- **Pass data inline** with `--data '{...}'` — do NOT create temp files\n- Add `--json` to any command for machine-readable JSON output\n- **Aliases teach canonical commands** — executing aliases emit a status hint; misleading lifecycle aliases reject and point to `retract`\n- Writes go through `wh commit submit` (or bare `wh commit`) or wrappers (`create`, `revise`, `retract`, `assertion create`). `retract` irreversibly withdraws an identity and creates a history entry.\n- Use `wh doctor` to check environment health\n";
|
|
63003
|
+
var prime_content_default = "# WarmHub CLI Context\n> **Context Recovery**: Run `wh prime` after compaction or new session\n\n## Environment\n{{REPO_LINE}}\n\n## Core Concepts\n- **Thing**: A named entity versioned by writes. **Assertion**: A thing that makes a shape-validated claim about another thing.\n- **Shape**: A thing defining data structure; every other thing has one. **Write**: One or more add/revise/retract operations with per-operation results.\n- **wref**: A reference to a thing. Local: `Player` (the shape) or `Player/alice` (a thing with that shape). Cross-repo: `wh:org/repo/Shape` or `wh:org/repo/Shape/name`.\n\n## Versioned Wrefs\n- `Shape` addresses the shape itself; `Shape/name` addresses a thing with that shape. `@vN` pins either.\n- Floating write refs to retracted targets fail; existing pinned versions remain valid.\n- Rename invalidates old spellings, including `@vN`; the new name resolves history.\n- Untyped wrefs accept any thing. `wref<T>` requires the target's shape to be `T`; a shape has no shape, so never satisfies it. `wref?` coalesces only `thing_absent`, never a missing shape.\n- Wref `binding`: `identity` follows the Thing, `versioned` pins.\n\n## Key Workflows\n\n**Write data** (discover shapes → scaffold ops → submit):\n```bash\nwh shape list --repo org/repo # list available shapes\nwh shape view ShapeName --repo org/repo # inspect fields\nwh shape template ShapeName -o ops.json --repo org/repo # scaffold write ops (supports --kind assertion)\n# edit ops.json — fill FILL_IN placeholders — then:\nwh commit submit --file ops.json --dry-run --repo org/repo # preview; remove --dry-run to submit\n# or single assertion (no file needed):\nwh assertion create --shape ShapeName --about Target/name --name my-assertion --data '{\"field\":1}' --repo org/repo\n# Relay failed operation details when present. Never hand-guess ops JSON — use `wh shape template <Shape>`.\n```\n\n**Read data:**\n```bash\nwh thing list --repo org/repo # all things at HEAD\nwh thing view Shape/name --repo org/repo # inspect a thing\nwh thing query --shape MyShape --repo org/repo # find things by shape\nwh thing about Shape --repo org/repo # assertions about a shape\nwh assertion list --repo org/repo # all assertions at HEAD\nwh thing history Shape/name --repo org/repo # version history\n\n# Batch read — wh thing view is variadic (max 500 wrefs/call):\nwh thing view Player/alice Player/bob # variadic positionals\nwh thing view --file wrefs.txt --json # one wref per line\ncat wrefs.txt | wh thing view --format jsonl # one JSON line per *deduped* requested wref\n```\n\n## Wref Quick Reference\n\nWrites use explicit names and wrefs. Untyped fields, collection members,\nassertion `about`, and committers accept any thing. Create a deterministic\ntarget before referencing it in the same commit.\n\n## Command Reference\n\n**Global flags**: `--repo`, `--format`, `--json`, `--live`\n### thing — Things\n- `wh thing list [--shape] [--kind] [--match] [--include-retracted]` — Current HEAD state\n- `wh thing view [<wref>...] [--file <path>] [--version] [--depth] [--include-retracted] [--data-mode auto|full]` — Thing details. Variadic (max 500). `--version` implies `--include-retracted`. Batch JSON returns `{ requested, items, missing }`; jsonl emits one row per deduped requested wref. Large Set/List bodies summarize by default; use `--data-mode full` for canonical collection JSON.\n- `wh thing history [wref] [--shape] [--about] [--include-retracted]` — Version history\n- `wh thing resolve <wref>` — Resolve a wref to its canonical thing identity\n- `wh thing create <name|Shape/name> (--data|--file) [--shape]` — Create\n- `wh thing revise <name> [--data] [--message] [--committer] [--expected-version]` — Revise (CONFLICT if HEAD≠n)\n- `wh thing retract <wref> -m <message> [--reason] [--kind] [--expected-version]` — Retract\n- `wh thing query [--shape] [--kind] [--about] [--match]` — Query by filters\n- `wh thing search <query> [--shape] [--kind] [--about] [--mode]` — Search text\n- `wh thing rename <Shape/oldName> <newName>` — Rename\n- `wh thing refs <wref> [--inbound] [--outbound] [--field]` — Show field references; use `wh thing about` for assertions about the target thing\n- `wh thing about <wref> [--shape] [--match] [--depth] [--resolve-collections] [--role from|to|ends] [--limit] [--include-retracted]` — Show assertions about the target identity; `--resolve-collections` expands bare/@HEAD/@ALL members, `--role` filters direction; not pinned @vN\n\n- `wh view evaluate VIEW [--limit N] [--cursor TOK] [--all]`\n### commit — Write operations\n- `wh commit submit [--ops|--file|--add|--revise|--retract] [--dry-run] [--skip-existing]` — Submit operations, or evaluate the complete bounded input without durable changes under `--dry-run`. JSONL preview emits one operation row per input plus one summary.\n- `wh shape template <shape> [shape2 ...] [--kind] [--operation add|revise|retract] [-o file]` — Generate sample ops\n\n### assertion — Assertion operations\n- `wh assertion list [--about wref] [--shape] [--match] [--include-retracted]` — Browse assertions\n- `wh assertion view <wref> [--version] [--include-retracted]` — Assertion details\n- `wh assertion create --shape <s> --name <n> --about <wref> [--data] [-m] [--committer]` — Create assertion\n- `wh assertion revise <wref> --data <json> [--message] [--committer]` — Revise assertion\n- `wh assertion retract <wref> -m <message> [--reason] [--committer] [--expected-version]` — Retract assertion\n- `wh assertion history <wref> [--include-retracted]` — Assertion history\n\n### shape — Shape management\n- `wh shape list [--match] [--include-retracted]` — List all shapes\n- `wh shape view <name> [--include-retracted]` — Shape details\n- `wh shape revise <name> (--fields|--file)`\n- `wh shape create <name> (--fields|--file)`\n- `wh shape retract <name> -m <message> [--reason] [--expected-version]` — Retract shape\n- `wh shape history <name> [--include-retracted]` — Shape history\n- `wh shape rename <oldName> <newName>` — Rename shape\n\n### repo — Repository management\n- `wh repo create <org/name> [--display-name] [--description] [--visibility]` — Create repo\n- `wh repo list [org]` — List repos\n- `wh repo view [org/repo]` — Repo details\n\n### org — Organization management\n- `wh org create <name> [--display-name]` — Create a new organization\n- `wh org view <name>` — View organization details (alias: info)\n- `wh org list` — List all organizations\n\n### sub — Subscription management\n- `wh sub create <name> [flags]` — Create a subscription\n- `wh sub view <name>` — View subscription details\n- `wh sub list` — List all subscriptions\n- `wh sub log <name>` — Tail subscription delivery feed\n- `wh sub attempts <runId>` — Show attempt history for a run\n- `wh sub pause <name>` — Pause a subscription\n- `wh sub resume <name>` — Resume a paused subscription\n- `wh sub bind <name> [--credentials]` — Bind a credential set to a subscription for webhook auth\n- `wh sub unbind <name>` — Remove credential binding from a subscription\n- `wh sub delete <name>` — Retire; name reserved\n\n### notifications — Action notification listing\n- `wh notifications [--limit] [--since]` — List repo-scoped action notifications\n\n### credential — Credential set management\n- `wh credential create <name> [--repo org/repo | --org org] [--scope] [--description]` — Create an empty credential set\n- `wh credential list [--repo org/repo | --org org]` — List credential sets accessible from a repo or org\n- `wh credential view <name> [--repo org/repo | --org org]` — View a credential set (key names only, no values)\n- `wh credential delete <name> [--repo org/repo | --org org]` — Delete a credential set and its Vault object\n- `wh credential set <setName> [<keyName>] [--repo org/repo | --org org] [--value]` — Set credential key(s). With `<keyName>`: single-key form (reads value from `--value` or stdin). Without `<keyName>`: batch form (reads JSON object from stdin, e.g. `{\"KEY\":\"val\"}`)\n- `wh credential unset <setName> <keyName> [--repo org/repo | --org org]` — Remove a key from a credential set\n- `wh credential audit <setName> [--repo org/repo | --org org]` — View audit log for a credential set\n- `wh credential revoke <setName> [--repo org/repo | --org org] [--reason]` — Revoke a credential set (blocks new binds and stops bound webhook deliveries)\n\n### component — Component management\n- `wh component validate <path>` — Validate package\n- `wh component install <org/name>` — Install a registered component\n- `wh component register <name> --org <org> --manifest <path> [flags]` — Register component identity\n- `wh component unregister <org/name>` — Remove a registered component identity\n- `wh component registry list --org <org>` — List registered components\n- `wh component registry view <org/name>` — View a registered component\n- `wh component registry update <org/name> [flags]` — Update a registered component\n- `wh component list` — List installed components\n- `wh component update <org/name>` — Update installed component\n- `wh component view <org/name>` — Show component details (alias: show)\n- `wh component doctor <org/name>` — Run component health checks\n- `wh component teardown <org/name>` — Pause component subscriptions\n\n### Getting More Info\n- `wh help` — help overview\n- `wh <domain>` — domain verbs\n- `wh <domain> <verb> --help` — verb flags and examples\n- `wh help --format json` — `CliSpecV2` (`schemaVersion: 2`): global/contextual/root tables and command overrides\n\n## Common Workflows\n\n**Explore a repo:**\n```bash\nwh thing list --repo org/repo # see all things in HEAD\nwh thing view Shape/name --repo org/repo # inspect a specific thing\nwh thing history Shape/name --repo org/repo # inspect version history\nwh thing about Shape/name # assertions about thing/shape\n```\n\n**Create an assertion** (most common write):\n```bash\n# --about takes an untyped target wref: Shape or Shape/name.\nwh assertion create --shape MyShape --about TargetShape/target-name \\\n --name my-assertion --data '{\"field_a\":1,\"field_b\":\"value\"}' --repo org/repo\n# Output includes per-operation status; relay failures when present.\n```\n\n**Create via write entrypoint** (alternative, supports batches and streams):\n```bash\nwh commit submit --add my-item --shape MyShape --kind assertion \\\n --about TargetShape/target-name --data '{\"field_a\":1}' --repo org/repo\n```\n\n**Batch write via file** (generate template → edit → submit):\n```bash\nwh shape template Hypothesis Evidence -o ops.json # add --kind assertion --about TargetShape/name for assertions\n# edit ops.json — fill FILL_IN placeholders\nwh commit submit --file ops.json -m \"batch update\" # submit all operations (bare `wh commit` is equivalent)\n# --file format: docs.warmhub.ai/cli-reference/commit-operations\n```\n\n**Bulk write (JSONL stream, >1k ops)** — one chunked stream beats per-record commits (~60× faster):\n```bash\nwh shape template MyShape -o ops.jsonl # one op per line (.jsonl)\nID=\"bulk-$(date +%s)\" # caller id for chunk correlation\nwh commit submit --file ops.jsonl --stream-id \"$ID\" --chunk-size 5000 \\\n --skip-existing --progress -m \"bulk ingest\" --repo org/repo\n# --chunk-size: ops per append chunk (default 1000, max 10000); chunk≈1 is ~60× slower\n# --skip-existing: skips already-written add ops (drops per-row read-before-write)\n# --stream-id identifies the submission but provides no receipt or resume.\n# After an outcome-unknown append, stop writes and reconcile attempted + unsent\n# work from a later verified checkpoint; never blindly replay revise/retract.\n```\n\n**Create collections:**\n```bash\nwh commit submit --add route --shape Arc --data '{\"from\":\"Location/a\",\"to\":\"Location/b\"}'\nwh assertion create --shape Supports --name route-support --about Arc/route --data '{\"confidence\":0.8}' --repo org/repo\n```\n\n**Modify data:**\n```bash\nwh thing revise Shape/name --data '{\"x\":5,\"y\":3}' -m \"update\" --repo org/repo\nwh thing retract Shape/old-item -m \"withdrawn\" --reason \"data feed contaminated\" --repo org/repo\n```\n\n**Query and filter:**\n```bash\nwh thing query --shape MyShape # by shape\nwh thing query --kind assertion --about Shape/name # by kind + target\nwh thing history Shape/name --limit 10 # version history\n```\n\n## Built-in Content shape\n\nWarmHub repos expose three well-known content wrefs:\n- `Content/Readme` — stored markdown for humans\n- `Content/Agents` — stored markdown guidance for AI agents\n- `Content/LlmsTxt` — synthesized per-request sitemap (read-only)\n\nFetch via `wh repo content get --kind readme|agents|llms-txt`,\n`client.repo.getReadme/getAgents/getLlmsTxt`, MCP `warmhub_repo_content_get`,\nor raw HTTP `GET /{org}/{repo}/readme.md|agents.md|llms.txt`.\nSee `wh repo describe` → `additionalInformation` for the discovery field.\n\n## Query Discipline\n- Plan the repo, shapes, and wrefs you need before the first query.\n- Gather the needed facts from one repo before switching to another.\n- Do the queries first, then write one complete answer.\n\n## Agent Tips\n- **Always run commands for live data** — this context describes the CLI, not repo contents\n- **Before writing, discover wrefs** — run `wh thing list` or `wh shape list`\n- **Shape field types**: `string`, `number`, `boolean`, `wref`, arrays, optionals, nested objects\n- **Write commands return per-operation results** — relay failures and affected wrefs to the user\n- **Pass data inline** with `--data '{...}'` — do NOT create temp files\n- Add `--json` to any command for machine-readable JSON output\n- **Aliases teach canonical commands** — executing aliases emit a status hint; misleading lifecycle aliases reject and point to `retract`\n- Writes go through `wh commit submit` (or bare `wh commit`) or wrappers (`create`, `revise`, `retract`, `assertion create`). `retract` irreversibly withdraws an identity and creates a history entry.\n- Use `wh doctor` to check environment health\n";
|
|
62963
63004
|
|
|
62964
63005
|
// ../../packages/warmhub-cli/src/domains/prime.ts
|
|
62965
63006
|
function buildMarkdown(config2) {
|
|
@@ -68718,7 +68759,7 @@ function unknownCommandError(command, resolver) {
|
|
|
68718
68759
|
return userInputError(`Unknown command: ${command}`, closest ? `Did you mean 'wh ${closest}'?` : "Run 'wh help' for available commands.");
|
|
68719
68760
|
}
|
|
68720
68761
|
function retirementError(entry) {
|
|
68721
|
-
const resolved =
|
|
68762
|
+
const resolved = typeof entry === "string" ? { message: entry } : entry;
|
|
68722
68763
|
return new CliError(2 /* UserInput */, "USER_INPUT", resolved.message, undefined, resolved.hint);
|
|
68723
68764
|
}
|
|
68724
68765
|
function rootControlWithCommandError(control) {
|
|
@@ -69366,8 +69407,7 @@ var resolver = createInvocationResolver(productionRegistry.getDomains());
|
|
|
69366
69407
|
var catalog = {
|
|
69367
69408
|
globals: GLOBAL_FLAG_SPECS,
|
|
69368
69409
|
contextualControls: CONTEXTUAL_CONTROL_SPECS,
|
|
69369
|
-
rootControls: ROOT_CONTROL_SPECS
|
|
69370
|
-
renameHints: RENAME_HINTS
|
|
69410
|
+
rootControls: ROOT_CONTROL_SPECS
|
|
69371
69411
|
};
|
|
69372
69412
|
function prepareCliInvocation(argv) {
|
|
69373
69413
|
return prepare(argv, resolver, catalog);
|
|
@@ -69426,7 +69466,7 @@ function selectedRepo(flags, config2) {
|
|
|
69426
69466
|
}
|
|
69427
69467
|
}
|
|
69428
69468
|
function isReservedCandidateName(name) {
|
|
69429
|
-
return isBuiltinCliDomain(name)
|
|
69469
|
+
return isBuiltinCliDomain(name);
|
|
69430
69470
|
}
|
|
69431
69471
|
function basePorts(flags, config2) {
|
|
69432
69472
|
return {
|
|
@@ -69768,7 +69808,7 @@ function resolveLogLevel(flagLevel, env) {
|
|
|
69768
69808
|
// package.json
|
|
69769
69809
|
var package_default3 = {
|
|
69770
69810
|
name: "@warmhub/cli",
|
|
69771
|
-
version: "0.
|
|
69811
|
+
version: "0.128.0",
|
|
69772
69812
|
private: false,
|
|
69773
69813
|
type: "module",
|
|
69774
69814
|
description: "The wh CLI for WarmHub — create repos, commit and query data, and compound knowledge with your AI agents.",
|
|
@@ -70393,5 +70433,5 @@ process.exitCode = interceptedExitCode === undefined ? await runPreparedCli(laun
|
|
|
70393
70433
|
version: package_default3.version
|
|
70394
70434
|
}) : interceptedExitCode;
|
|
70395
70435
|
|
|
70396
|
-
//# debugId=
|
|
70397
|
-
//# warmhub-cli-build-info {"cliVersion":"0.
|
|
70436
|
+
//# debugId=815EE8EFA242BD9064756E2164756E21
|
|
70437
|
+
//# warmhub-cli-build-info {"cliVersion":"0.128.0","sdkVersion":"0.126.0"}
|
package/package.json
CHANGED