yarramate 1.2.0 → 1.4.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/catalogues/core-enrichment.yaml +237 -2
- package/dist/adapters/visual/session-server.js +16 -1
- package/dist/adapters/visual/view-identity.d.ts +1 -1
- package/dist/adapters/visual/view-identity.js +61 -3
- package/dist/adapters/visual/wire.d.ts +30 -0
- package/dist/adapters/visual/workspace-model.d.ts +35 -3
- package/dist/adapters/visual/workspace-model.js +62 -2
- package/dist/ask-command.js +37 -14
- package/dist/cli-support.d.ts +1 -1
- package/dist/cli-support.js +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +26 -5
- package/dist/compiler.d.ts +13 -1
- package/dist/compiler.js +646 -0
- package/dist/concept-drafting.d.ts +13 -2
- package/dist/concept-drafting.js +15 -3
- package/dist/design-command.js +30 -4
- package/dist/evidence.js +25 -0
- package/dist/graph-projection.d.ts +10 -0
- package/dist/graph-projection.js +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/interrogate-command.d.ts +37 -1
- package/dist/interrogate-command.js +93 -42
- package/dist/interrogation-entry.d.ts +1 -1
- package/dist/layout-direction.d.ts +14 -0
- package/dist/layout-direction.js +5 -0
- package/dist/projection.d.ts +22 -6
- package/dist/projection.js +23 -2
- package/dist/relationship-drafting.d.ts +21 -2
- package/dist/relationship-drafting.js +49 -4
- package/dist/subject-references.js +5 -0
- package/dist/visual-app/assets/index-Rkq6smL2.css +1 -0
- package/dist/visual-app/assets/index-yCHtmQUH.js +394 -0
- package/dist/visual-app/index.html +2 -2
- package/dist/visual-app-lib/editor.js +29639 -27514
- package/dist/visual-app-lib/styles.css +1 -1
- package/dist/visual-app-lib/types/adapters/visual/view-identity.d.ts +1 -1
- package/dist/visual-app-lib/types/adapters/visual/wire.d.ts +30 -0
- package/dist/visual-app-lib/types/adapters/visual/workspace-model.d.ts +35 -3
- package/dist/visual-app-lib/types/compiler.d.ts +13 -1
- package/dist/visual-app-lib/types/concept-drafting.d.ts +13 -2
- package/dist/visual-app-lib/types/graph-projection.d.ts +10 -0
- package/dist/visual-app-lib/types/interrogate-command.d.ts +207 -0
- package/dist/visual-app-lib/types/layout-direction.d.ts +14 -0
- package/dist/visual-app-lib/types/projection.d.ts +22 -6
- package/dist/visual-app-lib/types/relationship-drafting.d.ts +21 -2
- package/dist/visual-app-lib/types/subject-identity.d.ts +34 -0
- package/dist/visual-app-lib/types/visual-app/App.d.ts +27 -2
- package/dist/visual-app-lib/types/visual-app/badges.d.ts +1 -0
- package/dist/visual-app-lib/types/visual-app/connection-panel.d.ts +9 -1
- package/dist/visual-app-lib/types/visual-app/context-menu-model.d.ts +15 -6
- package/dist/visual-app-lib/types/visual-app/graph-canvas.d.ts +77 -6
- package/dist/visual-app-lib/types/visual-app/kind-palette.d.ts +37 -0
- package/dist/visual-app-lib/types/visual-app/local-host.d.ts +42 -0
- package/dist/visual-app-lib/types/visual-app/mount.d.ts +73 -2
- package/dist/visual-app-lib/types/visual-app/open-questions.d.ts +15 -0
- package/dist/visual-app-lib/types/visual-app/query-fields.d.ts +3 -2
- package/dist/visual-app-lib/types/visual-app/query-panel.d.ts +8 -1
- package/dist/visual-app-lib/types/visual-app/save-view.d.ts +11 -5
- package/dist/visual-app-lib/types/visual-app/shipped-catalogue.d.ts +10 -0
- package/dist/visual-app-lib/types/visual-app/state.d.ts +15 -4
- package/dist/visual-app-lib/types/visual-app/subject-draft-panel.d.ts +13 -1
- package/dist/visual-app-lib/types/visual-app/subject-filter.d.ts +35 -0
- package/dist/visual-app-lib/types/visual-app/subject-form.d.ts +8 -0
- package/dist/visual-app-lib/types/visual-app/view-tree-model.d.ts +42 -9
- package/dist/visual-app-lib/types/visual-app/view-tree.d.ts +11 -2
- package/dist/visual-app-lib/types/visual-app/workspace-state.d.ts +81 -11
- package/dist/visual-app-lib/types/workspace.d.ts +2 -0
- package/dist/workspace.d.ts +2 -0
- package/dist/workspace.js +1 -0
- package/docs/CONSUMING-YARRAMATE.md +81 -0
- package/package.json +2 -1
- package/schema/yarramate-design-step.schema.json +26 -0
- package/schema/yarramate-document.schema.json +14 -0
- package/schema/yarramate-interrogation-report.schema.json +31 -0
- package/schema/yarramate-pattern.schema.json +133 -0
- package/schema/yarramate-projection.schema.json +9 -0
- package/schema/yarramate-question-catalogue.schema.json +34 -0
- package/schema/yarramate-visual-graph.schema.json +9 -0
- package/schema/yarramate-workspace.schema.json +4 -0
- package/skills/yarramate-architecture/SKILL.md +5 -0
- package/dist/visual-app/assets/index-CcmfL3oY.js +0 -394
- package/dist/visual-app/assets/index-DLutIWES.css +0 -1
package/dist/ask-command.js
CHANGED
|
@@ -470,7 +470,7 @@ export function runAskCommand(options, cwd) {
|
|
|
470
470
|
});
|
|
471
471
|
if (!loadedCatalogue.ok)
|
|
472
472
|
return failed(loadedCatalogue.diagnostics);
|
|
473
|
-
const report = evaluateCatalogue(loadedCatalogue.catalogue, compilation.graph, compilation.profileContext);
|
|
473
|
+
const report = evaluateCatalogue(loadedCatalogue.catalogue, compilation.graph, compilation.profileContext, evidenceDocuments.flatMap(({ observations }) => observations));
|
|
474
474
|
const result = {
|
|
475
475
|
format: 'yarramate/ask-result/v1',
|
|
476
476
|
workspace: workspace.id,
|
|
@@ -500,8 +500,15 @@ export function runAskCommand(options, cwd) {
|
|
|
500
500
|
if (reconciliation !== undefined) {
|
|
501
501
|
lines.push(reconciliationLine(reconciliation));
|
|
502
502
|
}
|
|
503
|
+
// Zero open has two causes and only one is complete (#334): a
|
|
504
|
+
// catalogue whose waves are all gated shut has asked nothing, and
|
|
505
|
+
// reporting that as a finished interview is the same empty-set
|
|
506
|
+
// flattery the wave rail carried.
|
|
507
|
+
const askedAnything = report.waves.some((wave) => wave.questions.length > 0);
|
|
503
508
|
lines.push(report.summary.open === 0
|
|
504
|
-
?
|
|
509
|
+
? askedAnything
|
|
510
|
+
? `Design interview complete (catalogue ${report.catalogue}): no open questions.`
|
|
511
|
+
: `Design interview not started (catalogue ${report.catalogue}): no wave has opened yet.`
|
|
505
512
|
: `Design interview: ${plural(report.summary.open, 'open question')} (catalogue ${report.catalogue}) — continue: yarramate design ${workspacePath}`, '', 'Backlog — planned, dependency order:', ...plannedLines(planned), '', `Current: ${plural(current.length, 'subject')} · Retired: ${retired.length} ` +
|
|
506
513
|
`(roster: yarramate ask ${workspacePath} --subjects)`);
|
|
507
514
|
return emit(result, `${lines.join('\n')}\n`);
|
|
@@ -689,8 +696,21 @@ export function runAskCommand(options, cwd) {
|
|
|
689
696
|
});
|
|
690
697
|
if (!loadedCatalogue.ok)
|
|
691
698
|
return failed(loadedCatalogue.diagnostics);
|
|
699
|
+
// The evidence overlay rides along for the one condition that
|
|
700
|
+
// reads it (unchallenged-evidence); a workspace declaring no
|
|
701
|
+
// evidence passes an overlay known to be empty.
|
|
702
|
+
const evidenceObservations = [];
|
|
703
|
+
for (const path of workspace.evidence) {
|
|
704
|
+
const loaded = loadEvidence({
|
|
705
|
+
path,
|
|
706
|
+
source: readFileSync(resolve(cwd, path), 'utf8'),
|
|
707
|
+
});
|
|
708
|
+
if (!loaded.ok)
|
|
709
|
+
return failed(loaded.diagnostics);
|
|
710
|
+
evidenceObservations.push(...loaded.evidence.observations);
|
|
711
|
+
}
|
|
692
712
|
const report = {
|
|
693
|
-
...evaluateCatalogue(loadedCatalogue.catalogue, graph, compilation.profileContext),
|
|
713
|
+
...evaluateCatalogue(loadedCatalogue.catalogue, graph, compilation.profileContext, evidenceObservations),
|
|
694
714
|
workspace: workspace.id,
|
|
695
715
|
};
|
|
696
716
|
const ordered = {
|
|
@@ -971,7 +991,20 @@ export function runAskCommand(options, cwd) {
|
|
|
971
991
|
});
|
|
972
992
|
if (!loadedCatalogue.ok)
|
|
973
993
|
return failed(loadedCatalogue.diagnostics);
|
|
974
|
-
|
|
994
|
+
// Loaded ahead of evaluation so the overlay feeds the one condition
|
|
995
|
+
// that reads it (unchallenged-evidence), then reused for the
|
|
996
|
+
// reconciliation summary below.
|
|
997
|
+
const evidenceDocuments = [];
|
|
998
|
+
for (const path of workspace.evidence) {
|
|
999
|
+
const loaded = loadEvidence({
|
|
1000
|
+
path,
|
|
1001
|
+
source: readFileSync(resolve(cwd, path), 'utf8'),
|
|
1002
|
+
});
|
|
1003
|
+
if (!loaded.ok)
|
|
1004
|
+
return failed(loaded.diagnostics);
|
|
1005
|
+
evidenceDocuments.push(loaded.evidence);
|
|
1006
|
+
}
|
|
1007
|
+
const report = evaluateCatalogue(loadedCatalogue.catalogue, graph, compilation.profileContext, evidenceDocuments.flatMap(({ observations }) => observations));
|
|
975
1008
|
const openQuestions = [];
|
|
976
1009
|
for (const wave of report.waves) {
|
|
977
1010
|
for (const question of wave.questions) {
|
|
@@ -1003,16 +1036,6 @@ export function runAskCommand(options, cwd) {
|
|
|
1003
1036
|
}
|
|
1004
1037
|
let reconciliation;
|
|
1005
1038
|
if (workspace.evidence.length > 0) {
|
|
1006
|
-
const evidenceDocuments = [];
|
|
1007
|
-
for (const path of workspace.evidence) {
|
|
1008
|
-
const loaded = loadEvidence({
|
|
1009
|
-
path,
|
|
1010
|
-
source: readFileSync(resolve(cwd, path), 'utf8'),
|
|
1011
|
-
});
|
|
1012
|
-
if (!loaded.ok)
|
|
1013
|
-
return failed(loaded.diagnostics);
|
|
1014
|
-
evidenceDocuments.push(loaded.evidence);
|
|
1015
|
-
}
|
|
1016
1039
|
const evaluation = evaluateEvidenceWorkspace(graph, evidenceDocuments);
|
|
1017
1040
|
if (!evaluation.ok)
|
|
1018
1041
|
return failed(evaluation.diagnostics);
|
package/dist/cli-support.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export interface CliResult {
|
|
|
7
7
|
export declare const isMainModule: (moduleUrl: string, entrypoint: string | undefined) => boolean;
|
|
8
8
|
export declare const packageVersion: string;
|
|
9
9
|
export declare const versionResult: (binary: string) => CliResult;
|
|
10
|
-
export declare const usage = "Usage:\n yarramate init <directory> [--no-pointer]\n yarramate design <workspace.yaml> [--subject <subject-id>] [--catalogue <catalogue.yaml>] [--facilitate] [--json]\n yarramate apply <operations.yaml> <workspace.yaml> [--json]\n yarramate ask <workspace.yaml> [--json]\n yarramate ask <workspace.yaml> \"<free text>\" | <subject-id> ... | <projection.yaml> [--budget <tokens>] [--neighbours <n>] [--json]\n yarramate ask <workspace.yaml> --subjects [--kind <term>] [--status <status>] [--json]\n yarramate ask <workspace.yaml> --kinds [--json]\n yarramate ask <workspace.yaml> --advise \"<topic>\" [--budget <tokens>] [--neighbours <n>] [--catalogue <catalogue.yaml>] [--json]\n yarramate ask <workspace.yaml> --where \"<free text>\" | <subject-id> ... [--json]\n yarramate ask <workspace.yaml> --next [--json]\n yarramate ask <workspace.yaml> --open [--catalogue <catalogue.yaml>] [--json]\n yarramate ask <workspace.yaml> --compare <from-state> <to-state> [--json]\n yarramate ask <workspace.yaml> --changed <git-range> [--budget <tokens>] [--neighbours <n>] [--json]\n yarramate check <source.yaml> [source.yaml ...] [--json] [--strict]\n yarramate reconcile <workspace.yaml
|
|
10
|
+
export declare const usage = "Usage:\n yarramate init <directory> [--no-pointer]\n yarramate design <workspace.yaml> [--subject <subject-id>] [--catalogue <catalogue.yaml>] [--facilitate] [--json]\n yarramate apply <operations.yaml> <workspace.yaml> [--json]\n yarramate ask <workspace.yaml> [--json]\n yarramate ask <workspace.yaml> \"<free text>\" | <subject-id> ... | <projection.yaml> [--budget <tokens>] [--neighbours <n>] [--json]\n yarramate ask <workspace.yaml> --subjects [--kind <term>] [--status <status>] [--json]\n yarramate ask <workspace.yaml> --kinds [--json]\n yarramate ask <workspace.yaml> --advise \"<topic>\" [--budget <tokens>] [--neighbours <n>] [--catalogue <catalogue.yaml>] [--json]\n yarramate ask <workspace.yaml> --where \"<free text>\" | <subject-id> ... [--json]\n yarramate ask <workspace.yaml> --next [--json]\n yarramate ask <workspace.yaml> --open [--catalogue <catalogue.yaml>] [--json]\n yarramate ask <workspace.yaml> --compare <from-state> <to-state> [--json]\n yarramate ask <workspace.yaml> --changed <git-range> [--budget <tokens>] [--neighbours <n>] [--json]\n yarramate check <source.yaml> [source.yaml ...] [--json] [--strict]\n yarramate reconcile <workspace.yaml> [--json]\n yarramate export graph <workspace.yaml> [--out <file>]\n yarramate export markdown <projection.yaml> <workspace.yaml> [--out <file>]\n yarramate export markdown --changed <git-range> <workspace.yaml> [--out <file>]\n yarramate export briefs <projection.yaml> <workspace.yaml> --out <directory> [--budget <tokens>]\n yarramate export briefs --changed <git-range> <workspace.yaml> --out <directory> [--budget <tokens>]\n yarramate export rtm <workspace.yaml> --out <directory>\n yarramate export likec4 <likec4-project.yaml> <output-dir> <workspace.yaml> [--changed <git-range>]\n";
|
|
11
11
|
export declare const diagnosticJson: (diagnostics: unknown) => string;
|
|
12
12
|
export declare const checkResultJson: (ok: boolean, diagnostics: unknown, counted?: {
|
|
13
13
|
readonly documents: number;
|
package/dist/cli-support.js
CHANGED
|
@@ -22,7 +22,7 @@ export const versionResult = (binary) => ({
|
|
|
22
22
|
stdout: `${binary} ${packageVersion}\n`,
|
|
23
23
|
stderr: '',
|
|
24
24
|
});
|
|
25
|
-
export const usage = 'Usage:\n yarramate init <directory> [--no-pointer]\n yarramate design <workspace.yaml> [--subject <subject-id>] [--catalogue <catalogue.yaml>] [--facilitate] [--json]\n yarramate apply <operations.yaml> <workspace.yaml> [--json]\n yarramate ask <workspace.yaml> [--json]\n yarramate ask <workspace.yaml> "<free text>" | <subject-id> ... | <projection.yaml> [--budget <tokens>] [--neighbours <n>] [--json]\n yarramate ask <workspace.yaml> --subjects [--kind <term>] [--status <status>] [--json]\n yarramate ask <workspace.yaml> --kinds [--json]\n yarramate ask <workspace.yaml> --advise "<topic>" [--budget <tokens>] [--neighbours <n>] [--catalogue <catalogue.yaml>] [--json]\n yarramate ask <workspace.yaml> --where "<free text>" | <subject-id> ... [--json]\n yarramate ask <workspace.yaml> --next [--json]\n yarramate ask <workspace.yaml> --open [--catalogue <catalogue.yaml>] [--json]\n yarramate ask <workspace.yaml> --compare <from-state> <to-state> [--json]\n yarramate ask <workspace.yaml> --changed <git-range> [--budget <tokens>] [--neighbours <n>] [--json]\n yarramate check <source.yaml> [source.yaml ...] [--json] [--strict]\n yarramate reconcile <workspace.yaml
|
|
25
|
+
export const usage = 'Usage:\n yarramate init <directory> [--no-pointer]\n yarramate design <workspace.yaml> [--subject <subject-id>] [--catalogue <catalogue.yaml>] [--facilitate] [--json]\n yarramate apply <operations.yaml> <workspace.yaml> [--json]\n yarramate ask <workspace.yaml> [--json]\n yarramate ask <workspace.yaml> "<free text>" | <subject-id> ... | <projection.yaml> [--budget <tokens>] [--neighbours <n>] [--json]\n yarramate ask <workspace.yaml> --subjects [--kind <term>] [--status <status>] [--json]\n yarramate ask <workspace.yaml> --kinds [--json]\n yarramate ask <workspace.yaml> --advise "<topic>" [--budget <tokens>] [--neighbours <n>] [--catalogue <catalogue.yaml>] [--json]\n yarramate ask <workspace.yaml> --where "<free text>" | <subject-id> ... [--json]\n yarramate ask <workspace.yaml> --next [--json]\n yarramate ask <workspace.yaml> --open [--catalogue <catalogue.yaml>] [--json]\n yarramate ask <workspace.yaml> --compare <from-state> <to-state> [--json]\n yarramate ask <workspace.yaml> --changed <git-range> [--budget <tokens>] [--neighbours <n>] [--json]\n yarramate check <source.yaml> [source.yaml ...] [--json] [--strict]\n yarramate reconcile <workspace.yaml> [--json]\n yarramate export graph <workspace.yaml> [--out <file>]\n yarramate export markdown <projection.yaml> <workspace.yaml> [--out <file>]\n yarramate export markdown --changed <git-range> <workspace.yaml> [--out <file>]\n yarramate export briefs <projection.yaml> <workspace.yaml> --out <directory> [--budget <tokens>]\n yarramate export briefs --changed <git-range> <workspace.yaml> --out <directory> [--budget <tokens>]\n yarramate export rtm <workspace.yaml> --out <directory>\n yarramate export likec4 <likec4-project.yaml> <output-dir> <workspace.yaml> [--changed <git-range>]\n';
|
|
26
26
|
export const diagnosticJson = (diagnostics) => `${JSON.stringify({
|
|
27
27
|
format: 'yarramate/diagnostic-result/v1',
|
|
28
28
|
diagnostics,
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { type CliResult } from './cli-support.js';
|
|
3
3
|
export type { CliResult } from './cli-support.js';
|
|
4
|
+
export declare const deriveInitId: (directory: string) => string;
|
|
4
5
|
export declare function runCli(args: readonly string[], cwd?: string): CliResult;
|
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { existsSync, mkdirSync, readFileSync, writeFileSync, } from 'node:fs';
|
|
3
|
-
import { dirname, relative, resolve } from 'node:path';
|
|
3
|
+
import { basename, dirname, relative, resolve } from 'node:path';
|
|
4
4
|
import { compileWorkspace } from './compiler.js';
|
|
5
5
|
import { diagnosticJson, isMainModule, usage, versionResult, } from './cli-support.js';
|
|
6
6
|
import { runAskCommand } from './ask-command.js';
|
|
@@ -13,8 +13,12 @@ import { deriveAttestationStaleness } from './attestation-staleness.js';
|
|
|
13
13
|
import { reconcileEvidenceReports } from './reconciliation.js';
|
|
14
14
|
import { loadWorkspaceManifest } from './workspace.js';
|
|
15
15
|
const runReconciliation = (options, cwd) => {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
// Bare reconcile already emits JSON, so --json changes nothing — but a
|
|
17
|
+
// harness scripting "add --json to every verb" must not hit exit 2 on
|
|
18
|
+
// the one verb that treats it as unknown (#275). Accepted as a no-op.
|
|
19
|
+
const positional = options.filter((option) => option !== '--json');
|
|
20
|
+
const [workspacePath] = positional;
|
|
21
|
+
if (positional.length !== 1 ||
|
|
18
22
|
workspacePath === undefined ||
|
|
19
23
|
workspacePath.startsWith('-')) {
|
|
20
24
|
return { exitCode: 2, stdout: '', stderr: usage };
|
|
@@ -89,6 +93,22 @@ const runReconciliation = (options, cwd) => {
|
|
|
89
93
|
return { exitCode: 2, stdout: '', stderr: `${message}\n` };
|
|
90
94
|
}
|
|
91
95
|
};
|
|
96
|
+
// The id grammar the document and workspace schemas share: a lowercase
|
|
97
|
+
// letter first, then lowercase alphanumerics in single-hyphen segments.
|
|
98
|
+
const initIdPattern = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
|
|
99
|
+
// The first check output should say the project's own name, not `main`
|
|
100
|
+
// (#275, ADR 0112): the default id is the target directory's basename,
|
|
101
|
+
// slugified to the shared id grammar. `init .` resolves before deriving,
|
|
102
|
+
// so the cwd's basename is what gets named. `main` remains the fallback
|
|
103
|
+
// when the basename yields nothing the schemas accept ('.', '..',
|
|
104
|
+
// all-symbols, a leading digit).
|
|
105
|
+
export const deriveInitId = (directory) => {
|
|
106
|
+
const slug = basename(directory)
|
|
107
|
+
.toLowerCase()
|
|
108
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
109
|
+
.replace(/^-+|-+$/g, '');
|
|
110
|
+
return initIdPattern.test(slug) ? slug : 'main';
|
|
111
|
+
};
|
|
92
112
|
const runInit = (options, cwd) => {
|
|
93
113
|
const positional = options.filter((option) => option !== '--no-pointer');
|
|
94
114
|
const writePointer = positional.length === options.length;
|
|
@@ -114,14 +134,15 @@ const runInit = (options, cwd) => {
|
|
|
114
134
|
stderr: `${existing.join(' and ')} ${existing.length === 1 ? 'already exists' : 'already exist'}; nothing was changed\n`,
|
|
115
135
|
};
|
|
116
136
|
}
|
|
137
|
+
const workspaceId = deriveInitId(workspaceRoot);
|
|
117
138
|
mkdirSync(dirname(documentPath), { recursive: true });
|
|
118
139
|
writeFileSync(documentPath, 'format: yarramate/v1\n' +
|
|
119
|
-
|
|
140
|
+
`id: ${workspaceId}\n` +
|
|
120
141
|
'profile: yarramate/core@0.1\n' +
|
|
121
142
|
'concepts: []\n' +
|
|
122
143
|
'relationships: []\n', 'utf8');
|
|
123
144
|
writeFileSync(manifestPath, 'format: yarramate/workspace/v1\n' +
|
|
124
|
-
|
|
145
|
+
`id: ${workspaceId}\n` +
|
|
125
146
|
'documents:\n' +
|
|
126
147
|
' - architecture/*.yaml\n' +
|
|
127
148
|
'profiles: []\n' +
|
package/dist/compiler.d.ts
CHANGED
|
@@ -74,6 +74,18 @@ export interface ResolvedProfileContext {
|
|
|
74
74
|
/** Kind identity -> the core kind it resolves to through lineage. */
|
|
75
75
|
readonly conceptKindCoreAncestors: ReadonlyMap<string, CoreConceptKindId>;
|
|
76
76
|
readonly relationshipKindCoreAncestors: ReadonlyMap<string, RelationshipKind>;
|
|
77
|
+
/**
|
|
78
|
+
* The core relationship kinds a pattern PORTS for a concept kind (#268
|
|
79
|
+
* phase 3, ADR 0124), keyed by kind identity. Only kinds that have a
|
|
80
|
+
* pattern with ports appear.
|
|
81
|
+
*
|
|
82
|
+
* A macro edge needs both ends to port its kind, so a consumer offering a
|
|
83
|
+
* palette between two instances intersects the two sets. Two raw groupings
|
|
84
|
+
* permit ten of the eleven kinds, which is no narrowing at all; the ports
|
|
85
|
+
* are what restore the guidance the relationship table gives everywhere
|
|
86
|
+
* else.
|
|
87
|
+
*/
|
|
88
|
+
readonly patternPortKinds: ReadonlyMap<string, readonly RelationshipKind[]>;
|
|
77
89
|
/**
|
|
78
90
|
* The core relationship kinds the ArchiMate table permits between two
|
|
79
91
|
* concept kind identities, resolved through lineage; undefined when either
|
|
@@ -104,7 +116,7 @@ export type ContextualCompilationResult = {
|
|
|
104
116
|
*/
|
|
105
117
|
export interface ParsedWorkspaceSource {
|
|
106
118
|
readonly source: string;
|
|
107
|
-
readonly kind: 'profile' | 'document';
|
|
119
|
+
readonly kind: 'profile' | 'document' | 'pattern';
|
|
108
120
|
readonly value: unknown;
|
|
109
121
|
readonly schemaDiagnostics: readonly Diagnostic[];
|
|
110
122
|
/**
|