@productbrain/cli 0.1.0-beta.9070 → 0.1.0-beta.9076
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/lib/__tests__/legalRelationTypes.test.js +0 -37
- package/dist/lib/__tests__/legalRelationTypes.test.js.map +1 -1
- package/dist/lib/legalRelationTypes.d.ts +4 -11
- package/dist/lib/legalRelationTypes.d.ts.map +1 -1
- package/dist/lib/legalRelationTypes.js +6 -31
- package/dist/lib/legalRelationTypes.js.map +1 -1
- package/package.json +1 -1
|
@@ -39,25 +39,6 @@ describe('filterCreatableRelationTypes', () => {
|
|
|
39
39
|
// exercising the malformed-row-skip path.
|
|
40
40
|
const PARSABLE = { description: 'x', cardinality_rule: 'multiple' };
|
|
41
41
|
describe('resolveCreatableRelationTypes', () => {
|
|
42
|
-
it('when duplicate canonical_key rows exist, the LAST trust-accepted+parsable match wins (bcQiSg, mirrors loadTypeMap last-write-wins)', () => {
|
|
43
|
-
const typeRows = [
|
|
44
|
-
{ status: 'active', data: { canonical_key: 'goal', valid_relation_types: ['informs'], ...PARSABLE } },
|
|
45
|
-
{ status: 'active', data: { canonical_key: 'goal', valid_relation_types: ['depends_on', 'governs'], ...PARSABLE } },
|
|
46
|
-
];
|
|
47
|
-
expect(resolveCreatableRelationTypes(typeRows, 'goal', false)).toEqual(['depends_on', 'governs']);
|
|
48
|
-
});
|
|
49
|
-
it('skips a row whose status is not trust-accepted (draft/archived), even if it is the last match', () => {
|
|
50
|
-
const typeRows = [
|
|
51
|
-
{ status: 'active', data: { canonical_key: 'goal', valid_relation_types: ['informs'], ...PARSABLE } },
|
|
52
|
-
{ status: 'draft', data: { canonical_key: 'goal', valid_relation_types: ['depends_on'], ...PARSABLE } },
|
|
53
|
-
{ status: 'archived', data: { canonical_key: 'goal', valid_relation_types: ['governs'], ...PARSABLE } },
|
|
54
|
-
];
|
|
55
|
-
expect(resolveCreatableRelationTypes(typeRows, 'goal', false)).toEqual(['informs']);
|
|
56
|
-
});
|
|
57
|
-
it('treats status "accepted" as trust-accepted too (isTrustAccepted parity)', () => {
|
|
58
|
-
const typeRows = [{ status: 'accepted', data: { canonical_key: 'goal', valid_relation_types: ['informs'], ...PARSABLE } }];
|
|
59
|
-
expect(resolveCreatableRelationTypes(typeRows, 'goal', false)).toEqual(['informs']);
|
|
60
|
-
});
|
|
61
42
|
it('returns an empty array when no row matches the canonical key', () => {
|
|
62
43
|
const typeRows = [{ status: 'active', data: { canonical_key: 'other', valid_relation_types: ['informs'], ...PARSABLE } }];
|
|
63
44
|
expect(resolveCreatableRelationTypes(typeRows, 'goal', false)).toEqual([]);
|
|
@@ -70,24 +51,6 @@ describe('resolveCreatableRelationTypes', () => {
|
|
|
70
51
|
const typeRows = [{ status: 'active', data: { canonical_key: 'insight', valid_relation_types: ['informs', 'belongs_to', 'custom_hand_added'], ...PARSABLE } }];
|
|
71
52
|
expect(resolveCreatableRelationTypes(typeRows, 'insight', true)).toEqual(['informs']);
|
|
72
53
|
});
|
|
73
|
-
it('skips a malformed LATER trust-accepted duplicate (missing description) rather than letting it overwrite a valid earlier row (bcRICo)', () => {
|
|
74
|
-
const typeRows = [
|
|
75
|
-
{ status: 'active', data: { canonical_key: 'goal', valid_relation_types: ['informs'], ...PARSABLE } },
|
|
76
|
-
{ status: 'active', data: { canonical_key: 'goal', valid_relation_types: ['depends_on'] /* no description */ } },
|
|
77
|
-
];
|
|
78
|
-
expect(resolveCreatableRelationTypes(typeRows, 'goal', false)).toEqual(['informs']);
|
|
79
|
-
});
|
|
80
|
-
it('skips a malformed LATER trust-accepted duplicate (invalid cardinality_rule) the same way', () => {
|
|
81
|
-
const typeRows = [
|
|
82
|
-
{ status: 'active', data: { canonical_key: 'goal', valid_relation_types: ['informs'], ...PARSABLE } },
|
|
83
|
-
{ status: 'active', data: { canonical_key: 'goal', valid_relation_types: ['depends_on'], description: 'x', cardinality_rule: 'not_a_real_rule' } },
|
|
84
|
-
];
|
|
85
|
-
expect(resolveCreatableRelationTypes(typeRows, 'goal', false)).toEqual(['informs']);
|
|
86
|
-
});
|
|
87
|
-
it('returns empty when every trust-accepted match for the key is malformed', () => {
|
|
88
|
-
const typeRows = [{ status: 'active', data: { canonical_key: 'goal', valid_relation_types: ['informs'] } }];
|
|
89
|
-
expect(resolveCreatableRelationTypes(typeRows, 'goal', false)).toEqual([]);
|
|
90
|
-
});
|
|
91
54
|
it('excludes anchored_to for a non-strategy canonicalKey, includes it for strategy (bcRgRI)', () => {
|
|
92
55
|
const typeRows = [{ status: 'active', data: { canonical_key: 'goal', valid_relation_types: ['informs', 'anchored_to'], ...PARSABLE } }];
|
|
93
56
|
expect(resolveCreatableRelationTypes(typeRows, 'goal', false)).toEqual(['informs']);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legalRelationTypes.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/legalRelationTypes.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAEvG,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,4BAA4B,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,4BAA4B,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,CAAC,4BAA4B,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,qBAAqB,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;aACzG,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,CAAC,4BAA4B,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;aAC9F,OAAO,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4HAA4H,EAAE,GAAG,EAAE;QACpI,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC/D,MAAM,CAAC,4BAA4B,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,4BAA4B,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,4BAA4B,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACtH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC5C,MAAM,CAAC,4BAA4B,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,4BAA4B,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,0FAA0F;AAC1F,wFAAwF;AACxF,0CAA0C;AAC1C,MAAM,QAAQ,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,gBAAgB,EAAE,UAAmB,EAAE,CAAC;AAE7E,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"legalRelationTypes.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/legalRelationTypes.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,20 +7,13 @@ type TypeRow = {
|
|
|
7
7
|
data?: {
|
|
8
8
|
canonical_key?: unknown;
|
|
9
9
|
valid_relation_types?: unknown;
|
|
10
|
-
description?: unknown;
|
|
11
|
-
cardinality_rule?: unknown;
|
|
12
10
|
} | null;
|
|
13
|
-
status?: string;
|
|
14
11
|
};
|
|
15
12
|
/** Resolves the declared `valid_relation_types` for `canonicalKey` out of a semantic-types
|
|
16
|
-
* listEntries result
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* exactly this active-duplicate shape) the LAST such match in listEntries' query order wins,
|
|
21
|
-
* mirroring loadTypeMap's Map.set()-overwrite-per-match loop over the same by_collection-indexed
|
|
22
|
-
* query — a malformed duplicate is skipped entirely rather than overwriting an earlier valid row
|
|
23
|
-
* (bcRICo). Then filters to what `pb relate` can create. */
|
|
13
|
+
* listEntries result. The server answers that read from its code catalog (DEC-1949,
|
|
14
|
+
* convex/chain/semanticTypes.ts typeCatalogRowsForWorkspace): one accepted, well-formed row per
|
|
15
|
+
* active type, so the row for the key is the one to read. Then filters to what `pb relate` can
|
|
16
|
+
* create. */
|
|
24
17
|
export declare function resolveCreatableRelationTypes(typeRows: readonly TypeRow[] | null | undefined, canonicalKey: string, targetIsDomain: boolean): string[];
|
|
25
18
|
export {};
|
|
26
19
|
//# sourceMappingURL=legalRelationTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legalRelationTypes.d.ts","sourceRoot":"","sources":["../../src/lib/legalRelationTypes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"legalRelationTypes.d.ts","sourceRoot":"","sources":["../../src/lib/legalRelationTypes.ts"],"names":[],"mappings":"AAgDA;;;wEAGwE;AACxE,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,GAAG,MAAM,EAAE,CAS5H;AAED,KAAK,OAAO,GAAG;IACb,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3E,CAAC;AAEF;;;;cAIc;AACd,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,EAC/C,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,OAAO,GACtB,MAAM,EAAE,CAGV"}
|
|
@@ -31,7 +31,6 @@
|
|
|
31
31
|
* scripts/generate-kernel-value-sets.mjs's header for the full rationale + retirement rule).
|
|
32
32
|
*/
|
|
33
33
|
import { ALLOWED_RELATION_TYPES as ALLOWED_RELATION_TYPES_LIST } from '../generated/relationTypes.generated.js';
|
|
34
|
-
import { isTrustAccepted } from './statusCategories.js'; // TASK-587 (WP-779, TEN-4295): generated copy of the kernel helper
|
|
35
34
|
const ALLOWED_RELATION_TYPES = new Set(ALLOWED_RELATION_TYPES_LIST);
|
|
36
35
|
/** Verbs guardRelation refuses outright regardless of ALLOWED_RELATION_TYPES membership — each
|
|
37
36
|
* routes to a different, specialized command instead of the generic relation door. */
|
|
@@ -55,37 +54,13 @@ export function filterCreatableRelationTypes(declared, targetIsDomain, sourceIsS
|
|
|
55
54
|
&& !(targetIsDomain && DOMAIN_TAG_VERBS.has(t))
|
|
56
55
|
&& !(!sourceIsStrategy && STRATEGY_ONLY_VERBS.has(t)));
|
|
57
56
|
}
|
|
58
|
-
/** Mirrors parseSemanticTypeDefData's validity rule (kernel/entries/semanticTypes.ts:65-77) —
|
|
59
|
-
* loadTypeMap skips a malformed row (missing/non-string description, or a cardinality_rule
|
|
60
|
-
* outside the 3-value enum) rather than letting it win, even when it's the LAST trust-accepted
|
|
61
|
-
* duplicate (round-5 finding bcRICo). Inlined rather than imported: same devDependency-only/
|
|
62
|
-
* unpublished-kernel constraint as ALLOWED_RELATION_TYPES above. */
|
|
63
|
-
function isParsableSemanticTypeRow(data) {
|
|
64
|
-
return typeof data?.description === 'string'
|
|
65
|
-
&& (data.cardinality_rule === 'singleton_per_workspace'
|
|
66
|
-
|| data.cardinality_rule === 'singleton_per_scope'
|
|
67
|
-
|| data.cardinality_rule === 'multiple');
|
|
68
|
-
}
|
|
69
57
|
/** Resolves the declared `valid_relation_types` for `canonicalKey` out of a semantic-types
|
|
70
|
-
* listEntries result
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* exactly this active-duplicate shape) the LAST such match in listEntries' query order wins,
|
|
75
|
-
* mirroring loadTypeMap's Map.set()-overwrite-per-match loop over the same by_collection-indexed
|
|
76
|
-
* query — a malformed duplicate is skipped entirely rather than overwriting an earlier valid row
|
|
77
|
-
* (bcRICo). Then filters to what `pb relate` can create. */
|
|
58
|
+
* listEntries result. The server answers that read from its code catalog (DEC-1949,
|
|
59
|
+
* convex/chain/semanticTypes.ts typeCatalogRowsForWorkspace): one accepted, well-formed row per
|
|
60
|
+
* active type, so the row for the key is the one to read. Then filters to what `pb relate` can
|
|
61
|
+
* create. */
|
|
78
62
|
export function resolveCreatableRelationTypes(typeRows, canonicalKey, targetIsDomain) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (row.data?.canonical_key !== canonicalKey)
|
|
82
|
-
continue;
|
|
83
|
-
if (row.status === undefined || !isTrustAccepted(row.status))
|
|
84
|
-
continue;
|
|
85
|
-
if (!isParsableSemanticTypeRow(row.data))
|
|
86
|
-
continue;
|
|
87
|
-
declared = row.data?.valid_relation_types;
|
|
88
|
-
}
|
|
89
|
-
return filterCreatableRelationTypes(declared, targetIsDomain, canonicalKey === 'strategy');
|
|
63
|
+
const row = (typeRows ?? []).find((r) => r.data?.canonical_key === canonicalKey);
|
|
64
|
+
return filterCreatableRelationTypes(row?.data?.valid_relation_types, targetIsDomain, canonicalKey === 'strategy');
|
|
90
65
|
}
|
|
91
66
|
//# sourceMappingURL=legalRelationTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legalRelationTypes.js","sourceRoot":"","sources":["../../src/lib/legalRelationTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,sBAAsB,IAAI,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"legalRelationTypes.js","sourceRoot":"","sources":["../../src/lib/legalRelationTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,sBAAsB,IAAI,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAEhH,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAEzF;uFACuF;AACvF,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAC;AAE9F;4FAC4F;AAC5F,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAE1F;0DAC0D;AAC1D,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAE1E;;;wEAGwE;AACxE,MAAM,UAAU,4BAA4B,CAAC,QAAiB,EAAE,cAAuB,EAAE,gBAAyB;IAChH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CACxC,OAAO,CAAC,KAAK,QAAQ;WAClB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;WAC3B,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;WAC7B,CAAC,CAAC,cAAc,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;WAC5C,CAAC,CAAC,CAAC,gBAAgB,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC;AAMD;;;;cAIc;AACd,MAAM,UAAU,6BAA6B,CAC3C,QAA+C,EAC/C,YAAoB,EACpB,cAAuB;IAEvB,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,KAAK,YAAY,CAAC,CAAC;IACjF,OAAO,4BAA4B,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,KAAK,UAAU,CAAC,CAAC;AACpH,CAAC"}
|