yarramate 0.16.0 → 0.18.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.
Files changed (49) hide show
  1. package/README.md +2 -1
  2. package/dist/adapters/graphify-cli.js +0 -0
  3. package/dist/adapters/likec4-cli.js +0 -0
  4. package/dist/adapters/mcp-cli.js +0 -0
  5. package/dist/adapters/visual/client.d.ts +74 -0
  6. package/dist/adapters/visual/client.js +448 -0
  7. package/dist/adapters/visual/likec4-compiler.d.ts +55 -0
  8. package/dist/adapters/visual/likec4-compiler.js +460 -0
  9. package/dist/adapters/visual/protocol-contract.d.ts +246 -0
  10. package/dist/adapters/visual/protocol-contract.js +19 -0
  11. package/dist/adapters/visual/protocol.d.ts +13 -0
  12. package/dist/adapters/visual/protocol.js +258 -0
  13. package/dist/adapters/visual/session-server.d.ts +130 -0
  14. package/dist/adapters/visual/session-server.js +1406 -0
  15. package/dist/adapters/visual/session-store.d.ts +126 -0
  16. package/dist/adapters/visual/session-store.js +755 -0
  17. package/dist/adapters/visual/wire.d.ts +93 -0
  18. package/dist/adapters/visual/wire.js +1 -0
  19. package/dist/adapters/visual-cli.d.ts +42 -0
  20. package/dist/adapters/visual-cli.js +274 -0
  21. package/dist/attestation-staleness.js +8 -1
  22. package/dist/cli.js +0 -0
  23. package/dist/compiler.d.ts +12 -0
  24. package/dist/compiler.js +46 -2
  25. package/dist/reconciliation.d.ts +17 -1
  26. package/dist/reconciliation.js +48 -1
  27. package/dist/rtm.d.ts +1 -0
  28. package/dist/rtm.js +9 -7
  29. package/dist/visual-app/assets/index-CGvC8e3R.css +1 -0
  30. package/dist/visual-app/assets/index-CXuW1tOj.js +209 -0
  31. package/dist/visual-app/index.html +18 -0
  32. package/docs/CONSUMING-YARRAMATE.md +49 -0
  33. package/package.json +25 -5
  34. package/schema/yarramate-ask-result.schema.json +4 -0
  35. package/schema/yarramate-document.schema.json +5 -0
  36. package/schema/yarramate-operations.schema.json +7 -1
  37. package/schema/yarramate-reconciliation-report.schema.json +36 -1
  38. package/schema/yarramate-visual-diagnostic-result.schema.json +67 -0
  39. package/schema/yarramate-visual-event.schema.json +255 -0
  40. package/schema/yarramate-visual-handoff.schema.json +120 -0
  41. package/schema/yarramate-visual-model.schema.json +111 -0
  42. package/schema/yarramate-visual-response.schema.json +230 -0
  43. package/schema/yarramate-visual-session-descriptor.schema.json +45 -0
  44. package/schema/yarramate-visual-session-request.schema.json +110 -0
  45. package/schema/yarramate-visual-session-started.schema.json +121 -0
  46. package/schema/yarramate-visual-status.schema.json +123 -0
  47. package/skills/yarramate-architecture/SKILL.md +28 -1
  48. package/skills/yarramate-architecture/references/native-authoring.md +15 -3
  49. package/skills/yarramate-architecture/references/visual-conversations.md +263 -0
package/dist/rtm.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { ATTESTATION_PREDICATE_PREFIX, parseAttestationClaimValue, } from './compiler.js';
1
2
  import { coreLocalKind, isDeclaredNonGoal } from './brief.js';
2
3
  import { conceptKinds } from './profile.js';
3
4
  // The RTM is one derived reading of the graph: the chain
@@ -28,7 +29,7 @@ export function buildRtm(workspace, graph, profileContext, evidenceReports) {
28
29
  for (const claim of graph.claims) {
29
30
  if (!('value' in claim.object))
30
31
  continue;
31
- if (claim.predicate.startsWith('yarramate/attestation/')) {
32
+ if (claim.predicate.startsWith(ATTESTATION_PREDICATE_PREFIX)) {
32
33
  attestationClaims.set(claim.subject, [
33
34
  ...(attestationClaims.get(claim.subject) ?? []),
34
35
  claim,
@@ -204,14 +205,13 @@ export function buildRtm(workspace, graph, profileContext, evidenceReports) {
204
205
  .flatMap((claim) => {
205
206
  if (!('value' in claim.object))
206
207
  return [];
207
- const match = /^(.*) ([0-9]{4}-[0-9]{2}-[0-9]{2})$/.exec(claim.object.value);
208
- if (match === null)
208
+ const parts = parseAttestationClaimValue(claim.object.value);
209
+ if (parts === undefined)
209
210
  return [];
210
211
  return [
211
212
  {
212
- topic: claim.predicate.slice('yarramate/attestation/'.length),
213
- by: match[1],
214
- on: match[2],
213
+ topic: claim.predicate.slice(ATTESTATION_PREDICATE_PREFIX.length),
214
+ ...parts,
215
215
  source: citation(claim),
216
216
  },
217
217
  ];
@@ -330,7 +330,9 @@ export function renderRtmMarkdown(rtm) {
330
330
  const attestations = row.attestations.length === 0
331
331
  ? 'none'
332
332
  : row.attestations
333
- .map((attestation) => escapeCell(`${attestation.topic}: ${attestation.by} on ${attestation.on}`) + ` (${cite(attestation.source)})`)
333
+ .map((attestation) => escapeCell(`${attestation.topic}: ${attestation.by} on ${attestation.on}${attestation.recordedBy === undefined
334
+ ? ''
335
+ : `, recorded by ${attestation.recordedBy}`}`) + ` (${cite(attestation.source)})`)
334
336
  .join('<br>');
335
337
  lines.push(`| ${requirement} | ${row.status ?? 'undeclared'} | ${lineage} | ${realizers} | ${evidence} | ${attestations} | ${cite(row.source)} |`);
336
338
  }
@@ -0,0 +1 @@
1
+ :root{--paper:#e8eef0;--ink:#182228;--eucalyptus:#416f65;--ochre:#8c4d18;--cobalt:#2457a6;--failure:#a3403a;--sheet:color-mix(in oklab, var(--paper) 55%, white);--rule:color-mix(in oklab, var(--ink) 16%, transparent);--rule-firm:color-mix(in oklab, var(--ink) 34%, transparent);--quiet:color-mix(in oklab, var(--ink) 62%, var(--paper));--display:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--body:"Avenir Next", Avenir, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--utility:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--step:.5rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}.offscreen{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visual-shell{background:var(--paper);min-width:0;height:100dvh;color:var(--ink);grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.command-strip{z-index:10;align-items:center;gap:calc(var(--step) * 2);min-height:48px;padding:calc(var(--step) * .75) calc(var(--step) * 2);border-bottom:1px solid var(--rule);background:var(--sheet);grid-template-columns:minmax(0,1fr) auto;display:grid;position:relative}.command-identity,.command-actions{align-items:center;gap:var(--step);min-width:0;display:flex}.command-identity h1{min-width:0;font-family:var(--display);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:15px;line-height:1.2;overflow:hidden}.command-actions select,.command-actions button{min-height:32px;font-family:var(--utility);letter-spacing:.08em;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:0 .7rem;font-size:12px}.command-actions select{padding-right:.35rem}.command-actions select:hover:enabled,.command-actions button:hover:enabled{border-color:var(--cobalt)}.command-actions select:disabled,.command-actions button:disabled{color:var(--quiet);border-color:var(--rule);cursor:not-allowed;background:0 0}.command-actions button[aria-expanded=true]{color:var(--paper);background:var(--cobalt);border-color:var(--cobalt)}.command-actions .end-session:hover:enabled{color:var(--paper);background:var(--failure);border-color:var(--failure)}.connection-state{font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--quiet);flex:none;font-size:11px}.end-transition-status{max-width:28rem;font-family:var(--utility);color:var(--quiet);font-size:11px;line-height:1.25}.end-transition-status:empty{display:none}.authority{font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--eucalyptus);margin:0;font-size:11px}.authority:before{content:"";vertical-align:0;background:currentColor;width:.5rem;height:.5rem;margin-right:.5rem;display:inline-block}.authority-ad-hoc{color:var(--ochre)}.beta-badge{font-family:var(--utility);letter-spacing:.1em;text-transform:uppercase;color:var(--ochre);border:1px solid var(--ochre);flex:none;padding:.05rem .4rem;font-size:10px;font-weight:600}.session-details{align-items:flex-start;gap:calc(var(--step) * 2);padding:var(--step) calc(var(--step) * 2) calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);background:var(--sheet);display:flex;position:absolute;top:100%;left:0;right:0;box-shadow:0 12px 28px #1323391f}.session-details[hidden]{display:none}.session-details p{max-width:90ch;color:var(--quiet);margin:0}.details-close{min-height:28px;font-family:var(--utility);letter-spacing:.08em;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;flex:none;margin-left:auto;padding:0 .6rem;font-size:11px}.details-close:hover{border-color:var(--cobalt)}.attention-count{background:var(--cobalt);color:#fff;text-align:center;border-radius:999px;min-width:1.25rem;padding:0 .35rem;font-size:11px}.workspace{min-width:0;min-height:0;display:grid;overflow:hidden}.workspace-conversation-open{grid-template-columns:minmax(0, 1fr) auto var(--conversation-width)}.workspace-conversation-closed{grid-template-columns:minmax(0,1fr)}.diagram-workspace{background:var(--paper);min-width:0;min-height:0;position:relative;overflow:hidden}.canvas,.diagram{width:100%;min-width:0;height:100%;min-height:0}.diagram-workspace>.faults{z-index:4;max-height:50%;position:absolute;inset:auto 0 0;overflow:auto}.conversation-separator{z-index:3;cursor:col-resize;touch-action:none;width:10px;height:100%;position:relative}.conversation-separator:before{background:var(--rule);content:"";width:1px;position:absolute;inset:0 auto 0 4px}.conversation-separator:hover:before,.conversation-separator:focus-visible:before{background:var(--cobalt);width:2px}.waiting{padding:calc(var(--step) * 4);font-family:var(--utility);letter-spacing:.1em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:12px}.talk{border-left:1px solid var(--rule);background:var(--sheet);grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:hidden}.talk[hidden]{display:none}.conversation-scroll{min-width:0;min-height:0;overflow:auto}.subject-inspector{min-width:0;padding:calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);background:color-mix(in srgb, var(--sheet) 92%, var(--cobalt) 8%)}.subject-heading-row{justify-content:space-between;align-items:flex-start;gap:var(--step);min-width:0;display:flex}.subject-heading-row>:first-child,.subject-heading-row h2{min-width:0}.subject-type{margin:0 0 calc(var(--step) * .25);color:var(--quiet);letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:700}.subject-heading-row h2{font-family:var(--display);overflow-wrap:anywhere;margin:0;font-size:16px;line-height:1.25}.subject-facts{gap:calc(var(--step) * .5);margin:var(--step) 0;display:grid}.subject-facts>div{gap:var(--step);grid-template-columns:minmax(5.5rem,auto) minmax(0,1fr);display:grid}.subject-facts dt{color:var(--quiet);font-size:11px}.subject-facts dd{overflow-wrap:anywhere;min-width:0;margin:0}.subject-description p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.description-clamped{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.subject-description button,.subject-navigate,.subject-clear{margin-top:calc(var(--step) * .5);min-height:28px}.ledger{padding:calc(var(--step) * 2) calc(var(--step) * 2.5);min-height:0;margin:0;list-style:none;overflow:visible}.ledger .empty p{color:var(--quiet);font-family:var(--utility);margin:0;font-size:12px}.said{padding:0 0 calc(var(--step) * 1.75) calc(var(--step) * 1.5);border-left:2px solid var(--rule)}.said+.said{padding-top:calc(var(--step) * 1.75)}.said-reviewer{border-left-color:var(--cobalt)}.said-agent{border-left-color:var(--eucalyptus)}.said-session{border-left-color:var(--ochre)}.who{font-family:var(--utility);letter-spacing:.16em;text-transform:uppercase;color:var(--quiet);margin:0 0 .15rem;font-size:10px}.words{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.faults{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--failure);background:color-mix(in oklab, var(--failure) 8%, var(--sheet))}.faults-title{margin:0 0 var(--step);color:var(--failure);font-size:13px}.faults ul{font-family:var(--utility);margin:0;padding-left:1.1rem;font-size:11px;line-height:1.6}.faults .code{font-weight:700}.faults .where{color:var(--quiet);margin-left:.4rem}.choices{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--rule)}.question{margin:0 0 var(--step);font-family:var(--display);font-size:1.05rem}.choices ul{gap:var(--step);margin:0;padding:0;list-style:none;display:grid}.choices button{text-align:left;width:100%;font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:.5rem .7rem;font-size:14px;display:block}.choices button:hover:enabled{border-color:var(--cobalt)}.choices button:disabled{color:var(--quiet);cursor:not-allowed}.choices .detail{color:var(--quiet);font-size:12px;display:block}.composer{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5) calc(var(--step) * 2);border-top:1px solid var(--rule)}.composer textarea{resize:vertical;width:100%;font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);border-radius:0;padding:.55rem .65rem;font-size:14px;display:block}.composer textarea:disabled{color:var(--quiet);background:color-mix(in oklab, var(--paper) 70%, var(--sheet));cursor:not-allowed}.composer-foot{justify-content:space-between;align-items:center;gap:var(--step);margin-top:var(--step);display:flex}.agent-status{align-items:center;gap:calc(var(--step) * .5);font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:10px;display:flex}.agent-spinner{border:1px solid;border-right-color:#0000;border-radius:50%;flex:none;width:.75rem;height:.75rem;animation:.7s linear infinite agent-spinner-turn}@keyframes agent-spinner-turn{to{transform:rotate(1turn)}}.composer button{font-family:var(--utility);letter-spacing:.08em;color:var(--paper);background:var(--cobalt);border:1px solid var(--cobalt);cursor:pointer;border-radius:0;padding:.45rem 1.1rem;font-size:12px}.composer button:disabled{color:var(--quiet);border-color:var(--rule-firm);cursor:not-allowed;background:0 0}.subject-chip{justify-content:space-between;align-items:center;gap:var(--step);margin-bottom:calc(var(--step) * .75);padding:calc(var(--step) * .5) calc(var(--step) * .75);border:1px solid var(--cobalt);color:var(--cobalt);border-radius:999px;display:flex}.subject-chip span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.subject-chip button{min-height:24px;padding:0 calc(var(--step) * .5);color:inherit;background:0 0;border:0;flex:none}@media (max-width:899px){.command-strip{gap:calc(var(--step) * .5);padding-inline:var(--step);grid-template-columns:1fr}.command-identity,.command-actions{gap:calc(var(--step) * .5)}.command-actions{overflow-x:auto}.workspace{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-height:0}.conversation-separator{display:none}.talk{border-top:1px solid var(--rule);border-left:0;border-radius:18px 18px 0 0;max-height:56dvh;box-shadow:0 -12px 36px #13233924}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}