mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-28 08:49:38 +02:00
feat: rename project wiki directory
This commit is contained in:
parent
e1e9c4af91
commit
7ca96ce316
111 changed files with 423 additions and 423 deletions
|
|
@ -2,7 +2,7 @@
|
|||
{
|
||||
"id": "link-001",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/arr-contract-first.md",
|
||||
"artifactKey": "wiki/global/arr-contract-first.md",
|
||||
"sourceKind": "warehouse",
|
||||
"sourcePath": "contracts",
|
||||
"relationship": "describes",
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
{
|
||||
"id": "link-002",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/arr-contract-first.md",
|
||||
"artifactKey": "wiki/global/arr-contract-first.md",
|
||||
"sourceKind": "notion",
|
||||
"sourcePath": "raw-sources/notion/arr-and-contract-reporting-notes.md",
|
||||
"relationship": "derived_from",
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
{
|
||||
"id": "link-003",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/revenue-gross-to-net.md",
|
||||
"artifactKey": "wiki/global/revenue-gross-to-net.md",
|
||||
"sourceKind": "warehouse",
|
||||
"sourcePath": "invoices",
|
||||
"relationship": "describes",
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
{
|
||||
"id": "link-004",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/revenue-gross-to-net.md",
|
||||
"artifactKey": "wiki/global/revenue-gross-to-net.md",
|
||||
"sourceKind": "notion",
|
||||
"sourcePath": "raw-sources/notion/revenue-reporting-policy.md",
|
||||
"relationship": "derived_from",
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
{
|
||||
"id": "link-005",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/discount-expiration.md",
|
||||
"artifactKey": "wiki/global/discount-expiration.md",
|
||||
"sourceKind": "warehouse",
|
||||
"sourcePath": "arr_movements",
|
||||
"relationship": "describes",
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
{
|
||||
"id": "link-006",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/nrr-retention.md",
|
||||
"artifactKey": "wiki/global/nrr-retention.md",
|
||||
"sourceKind": "warehouse",
|
||||
"sourcePath": "arr_movements",
|
||||
"relationship": "describes",
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
{
|
||||
"id": "link-007",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/nrr-retention.md",
|
||||
"artifactKey": "wiki/global/nrr-retention.md",
|
||||
"sourceKind": "notion",
|
||||
"sourcePath": "raw-sources/notion/retention-and-nrr-definition-notes.md",
|
||||
"relationship": "derived_from",
|
||||
|
|
@ -65,7 +65,7 @@
|
|||
{
|
||||
"id": "link-008",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/nrr-retention.md",
|
||||
"artifactKey": "wiki/global/nrr-retention.md",
|
||||
"sourceKind": "bi",
|
||||
"sourcePath": "raw-sources/bi/account_retention.view.lkml",
|
||||
"relationship": "derived_from",
|
||||
|
|
@ -74,7 +74,7 @@
|
|||
{
|
||||
"id": "link-009",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/segment-classification.md",
|
||||
"artifactKey": "wiki/global/segment-classification.md",
|
||||
"sourceKind": "warehouse",
|
||||
"sourcePath": "plans",
|
||||
"relationship": "describes",
|
||||
|
|
@ -83,7 +83,7 @@
|
|||
{
|
||||
"id": "link-010",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/segment-classification.md",
|
||||
"artifactKey": "wiki/global/segment-classification.md",
|
||||
"sourceKind": "notion",
|
||||
"sourcePath": "raw-sources/notion/sales-ops-segmentation-guide.md",
|
||||
"relationship": "derived_from",
|
||||
|
|
@ -92,7 +92,7 @@
|
|||
{
|
||||
"id": "link-011",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/activation-policy.md",
|
||||
"artifactKey": "wiki/global/activation-policy.md",
|
||||
"sourceKind": "notion",
|
||||
"sourcePath": "raw-sources/notion/activation-policy-decision-record.md",
|
||||
"relationship": "derived_from",
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
{
|
||||
"id": "link-012",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/procurement-workflows.md",
|
||||
"artifactKey": "wiki/global/procurement-workflows.md",
|
||||
"sourceKind": "warehouse",
|
||||
"sourcePath": "purchase_requests",
|
||||
"relationship": "describes",
|
||||
|
|
@ -110,7 +110,7 @@
|
|||
{
|
||||
"id": "link-013",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/customer-health-scoring.md",
|
||||
"artifactKey": "wiki/global/customer-health-scoring.md",
|
||||
"sourceKind": "notion",
|
||||
"sourcePath": "raw-sources/notion/customer-health-playbook.md",
|
||||
"relationship": "derived_from",
|
||||
|
|
@ -119,7 +119,7 @@
|
|||
{
|
||||
"id": "link-014",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/customer-health-scoring.md",
|
||||
"artifactKey": "wiki/global/customer-health-scoring.md",
|
||||
"sourceKind": "warehouse",
|
||||
"sourcePath": "support_tickets",
|
||||
"relationship": "describes",
|
||||
|
|
@ -128,7 +128,7 @@
|
|||
{
|
||||
"id": "link-015",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/support-escalation.md",
|
||||
"artifactKey": "wiki/global/support-escalation.md",
|
||||
"sourceKind": "notion",
|
||||
"sourcePath": "raw-sources/notion/support-escalation-runbook.md",
|
||||
"relationship": "derived_from",
|
||||
|
|
@ -137,7 +137,7 @@
|
|||
{
|
||||
"id": "link-016",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/internal-test-exclusion.md",
|
||||
"artifactKey": "wiki/global/internal-test-exclusion.md",
|
||||
"sourceKind": "notion",
|
||||
"sourcePath": "raw-sources/notion/analyst-onboarding.md",
|
||||
"relationship": "derived_from",
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
"sourceCount": 46
|
||||
},
|
||||
"knowledge": {
|
||||
"path": "knowledge/global",
|
||||
"path": "wiki/global",
|
||||
"pageCount": 28
|
||||
},
|
||||
"links": {
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@
|
|||
"type": "work_unit_started",
|
||||
"unitKey": "revenue-and-contracts",
|
||||
"skills": [
|
||||
"knowledge_capture",
|
||||
"wiki_capture",
|
||||
"sl_capture"
|
||||
],
|
||||
"stepBudget": 40
|
||||
|
|
@ -81,21 +81,21 @@
|
|||
"unitKey": "revenue-and-contracts",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/arr-contract-first.md"
|
||||
"key": "wiki/global/arr-contract-first.md"
|
||||
},
|
||||
{
|
||||
"type": "candidate_action",
|
||||
"unitKey": "revenue-and-contracts",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/revenue-gross-to-net.md"
|
||||
"key": "wiki/global/revenue-gross-to-net.md"
|
||||
},
|
||||
{
|
||||
"type": "candidate_action",
|
||||
"unitKey": "revenue-and-contracts",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/discount-expiration.md"
|
||||
"key": "wiki/global/discount-expiration.md"
|
||||
},
|
||||
{
|
||||
"type": "candidate_action",
|
||||
|
|
@ -127,7 +127,7 @@
|
|||
"type": "work_unit_started",
|
||||
"unitKey": "retention-and-segments",
|
||||
"skills": [
|
||||
"knowledge_capture",
|
||||
"wiki_capture",
|
||||
"sl_capture"
|
||||
],
|
||||
"stepBudget": 40
|
||||
|
|
@ -137,14 +137,14 @@
|
|||
"unitKey": "retention-and-segments",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/nrr-retention.md"
|
||||
"key": "wiki/global/nrr-retention.md"
|
||||
},
|
||||
{
|
||||
"type": "candidate_action",
|
||||
"unitKey": "retention-and-segments",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/segment-classification.md"
|
||||
"key": "wiki/global/segment-classification.md"
|
||||
},
|
||||
{
|
||||
"type": "candidate_action",
|
||||
|
|
@ -162,7 +162,7 @@
|
|||
"type": "work_unit_started",
|
||||
"unitKey": "procurement-and-activation",
|
||||
"skills": [
|
||||
"knowledge_capture",
|
||||
"wiki_capture",
|
||||
"sl_capture"
|
||||
],
|
||||
"stepBudget": 40
|
||||
|
|
@ -172,14 +172,14 @@
|
|||
"unitKey": "procurement-and-activation",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/activation-policy.md"
|
||||
"key": "wiki/global/activation-policy.md"
|
||||
},
|
||||
{
|
||||
"type": "candidate_action",
|
||||
"unitKey": "procurement-and-activation",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/procurement-workflows.md"
|
||||
"key": "wiki/global/procurement-workflows.md"
|
||||
},
|
||||
{
|
||||
"type": "candidate_action",
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
"type": "work_unit_started",
|
||||
"unitKey": "support-and-health",
|
||||
"skills": [
|
||||
"knowledge_capture",
|
||||
"wiki_capture",
|
||||
"sl_capture"
|
||||
],
|
||||
"stepBudget": 40
|
||||
|
|
@ -207,14 +207,14 @@
|
|||
"unitKey": "support-and-health",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/customer-health-scoring.md"
|
||||
"key": "wiki/global/customer-health-scoring.md"
|
||||
},
|
||||
{
|
||||
"type": "candidate_action",
|
||||
"unitKey": "support-and-health",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/support-escalation.md"
|
||||
"key": "wiki/global/support-escalation.md"
|
||||
},
|
||||
{
|
||||
"type": "candidate_action",
|
||||
|
|
@ -232,7 +232,7 @@
|
|||
"type": "work_unit_started",
|
||||
"unitKey": "governance-and-exclusions",
|
||||
"skills": [
|
||||
"knowledge_capture"
|
||||
"wiki_capture"
|
||||
],
|
||||
"stepBudget": 40
|
||||
},
|
||||
|
|
@ -241,7 +241,7 @@
|
|||
"unitKey": "governance-and-exclusions",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/internal-test-exclusion.md"
|
||||
"key": "wiki/global/internal-test-exclusion.md"
|
||||
},
|
||||
{
|
||||
"type": "work_unit_finished",
|
||||
|
|
@ -321,7 +321,7 @@
|
|||
"unitKey": "revenue-and-contracts",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/arr-contract-first.md",
|
||||
"key": "wiki/global/arr-contract-first.md",
|
||||
"summary": "ARR follows contract precedence with cancellation and discount caveats.",
|
||||
"rawFiles": [
|
||||
"contracts",
|
||||
|
|
@ -334,7 +334,7 @@
|
|||
"unitKey": "revenue-and-contracts",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/revenue-gross-to-net.md",
|
||||
"key": "wiki/global/revenue-gross-to-net.md",
|
||||
"summary": "Invoice, refund, and revenue dashboard evidence reconcile gross to net revenue.",
|
||||
"rawFiles": [
|
||||
"invoices",
|
||||
|
|
@ -346,7 +346,7 @@
|
|||
"unitKey": "revenue-and-contracts",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/discount-expiration.md",
|
||||
"key": "wiki/global/discount-expiration.md",
|
||||
"summary": "Discount expiration is separated from organic contraction for retention reporting.",
|
||||
"rawFiles": [
|
||||
"contracts",
|
||||
|
|
@ -394,7 +394,7 @@
|
|||
"unitKey": "retention-and-segments",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/nrr-retention.md",
|
||||
"key": "wiki/global/nrr-retention.md",
|
||||
"summary": "NRR uses parent-account rollups and quarterly ARR movement windows.",
|
||||
"rawFiles": [
|
||||
"accounts",
|
||||
|
|
@ -407,7 +407,7 @@
|
|||
"unitKey": "retention-and-segments",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/segment-classification.md",
|
||||
"key": "wiki/global/segment-classification.md",
|
||||
"summary": "Segment labels come from plan mapping and sales-ops policy notes.",
|
||||
"rawFiles": [
|
||||
"accounts",
|
||||
|
|
@ -432,7 +432,7 @@
|
|||
"unitKey": "procurement-and-activation",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/activation-policy.md",
|
||||
"key": "wiki/global/activation-policy.md",
|
||||
"summary": "Activation policy changed on January 15, 2026 and is encoded for agents.",
|
||||
"rawFiles": [
|
||||
"purchase_requests",
|
||||
|
|
@ -445,7 +445,7 @@
|
|||
"unitKey": "procurement-and-activation",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/procurement-workflows.md",
|
||||
"key": "wiki/global/procurement-workflows.md",
|
||||
"summary": "Procurement requester activity and approval events explain product usage.",
|
||||
"rawFiles": [
|
||||
"purchase_requests",
|
||||
|
|
@ -468,7 +468,7 @@
|
|||
"unitKey": "support-and-health",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/customer-health-scoring.md",
|
||||
"key": "wiki/global/customer-health-scoring.md",
|
||||
"summary": "Customer health combines support severity, ARR exposure, and product usage.",
|
||||
"rawFiles": [
|
||||
"support_tickets",
|
||||
|
|
@ -480,7 +480,7 @@
|
|||
"unitKey": "support-and-health",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/support-escalation.md",
|
||||
"key": "wiki/global/support-escalation.md",
|
||||
"summary": "Escalation tiers map ticket severity to SLA expectations.",
|
||||
"rawFiles": [
|
||||
"support_tickets",
|
||||
|
|
@ -503,7 +503,7 @@
|
|||
"unitKey": "governance-and-exclusions",
|
||||
"target": "wiki",
|
||||
"action": "created",
|
||||
"key": "knowledge/global/internal-test-exclusion.md",
|
||||
"key": "wiki/global/internal-test-exclusion.md",
|
||||
"summary": "Canonical metrics exclude internal and test accounts across source families.",
|
||||
"rawFiles": [
|
||||
"raw-sources/notion/analyst-onboarding.md"
|
||||
|
|
@ -515,97 +515,97 @@
|
|||
{
|
||||
"rawPath": "contracts",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/arr-contract-first.md",
|
||||
"artifactKey": "wiki/global/arr-contract-first.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "raw-sources/notion/arr-and-contract-reporting-notes.md",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/arr-contract-first.md",
|
||||
"artifactKey": "wiki/global/arr-contract-first.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "invoices",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/revenue-gross-to-net.md",
|
||||
"artifactKey": "wiki/global/revenue-gross-to-net.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "raw-sources/notion/revenue-reporting-policy.md",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/revenue-gross-to-net.md",
|
||||
"artifactKey": "wiki/global/revenue-gross-to-net.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "arr_movements",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/discount-expiration.md",
|
||||
"artifactKey": "wiki/global/discount-expiration.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "arr_movements",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/nrr-retention.md",
|
||||
"artifactKey": "wiki/global/nrr-retention.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "raw-sources/notion/retention-and-nrr-definition-notes.md",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/nrr-retention.md",
|
||||
"artifactKey": "wiki/global/nrr-retention.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "raw-sources/bi/account_retention.view.lkml",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/nrr-retention.md",
|
||||
"artifactKey": "wiki/global/nrr-retention.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "plans",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/segment-classification.md",
|
||||
"artifactKey": "wiki/global/segment-classification.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "raw-sources/notion/sales-ops-segmentation-guide.md",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/segment-classification.md",
|
||||
"artifactKey": "wiki/global/segment-classification.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "raw-sources/notion/activation-policy-decision-record.md",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/activation-policy.md",
|
||||
"artifactKey": "wiki/global/activation-policy.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "purchase_requests",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/procurement-workflows.md",
|
||||
"artifactKey": "wiki/global/procurement-workflows.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "raw-sources/notion/customer-health-playbook.md",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/customer-health-scoring.md",
|
||||
"artifactKey": "wiki/global/customer-health-scoring.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "support_tickets",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/customer-health-scoring.md",
|
||||
"artifactKey": "wiki/global/customer-health-scoring.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "raw-sources/notion/support-escalation-runbook.md",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/support-escalation.md",
|
||||
"artifactKey": "wiki/global/support-escalation.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
"rawPath": "raw-sources/notion/analyst-onboarding.md",
|
||||
"artifactKind": "wiki",
|
||||
"artifactKey": "knowledge/global/internal-test-exclusion.md",
|
||||
"artifactKey": "wiki/global/internal-test-exclusion.md",
|
||||
"actionType": "wiki_written"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -229,39 +229,39 @@ const knowledgePages = [
|
|||
];
|
||||
|
||||
const provenanceLinks = [
|
||||
['wiki', 'knowledge/global/arr-contract-first.md', 'warehouse', 'contracts', 'describes', 1],
|
||||
['wiki', 'wiki/global/arr-contract-first.md', 'warehouse', 'contracts', 'describes', 1],
|
||||
[
|
||||
'wiki',
|
||||
'knowledge/global/arr-contract-first.md',
|
||||
'wiki/global/arr-contract-first.md',
|
||||
'notion',
|
||||
'raw-sources/notion/arr-and-contract-reporting-notes.md',
|
||||
'derived_from',
|
||||
0.95,
|
||||
],
|
||||
['wiki', 'knowledge/global/revenue-gross-to-net.md', 'warehouse', 'invoices', 'describes', 1],
|
||||
['wiki', 'wiki/global/revenue-gross-to-net.md', 'warehouse', 'invoices', 'describes', 1],
|
||||
[
|
||||
'wiki',
|
||||
'knowledge/global/revenue-gross-to-net.md',
|
||||
'wiki/global/revenue-gross-to-net.md',
|
||||
'notion',
|
||||
'raw-sources/notion/revenue-reporting-policy.md',
|
||||
'derived_from',
|
||||
0.95,
|
||||
],
|
||||
['wiki', 'knowledge/global/discount-expiration.md', 'warehouse', 'arr_movements', 'describes', 1],
|
||||
['wiki', 'knowledge/global/nrr-retention.md', 'warehouse', 'arr_movements', 'describes', 1],
|
||||
['wiki', 'wiki/global/discount-expiration.md', 'warehouse', 'arr_movements', 'describes', 1],
|
||||
['wiki', 'wiki/global/nrr-retention.md', 'warehouse', 'arr_movements', 'describes', 1],
|
||||
[
|
||||
'wiki',
|
||||
'knowledge/global/nrr-retention.md',
|
||||
'wiki/global/nrr-retention.md',
|
||||
'notion',
|
||||
'raw-sources/notion/retention-and-nrr-definition-notes.md',
|
||||
'derived_from',
|
||||
0.95,
|
||||
],
|
||||
['wiki', 'knowledge/global/nrr-retention.md', 'bi', 'raw-sources/bi/account_retention.view.lkml', 'derived_from', 0.85],
|
||||
['wiki', 'knowledge/global/segment-classification.md', 'warehouse', 'plans', 'describes', 1],
|
||||
['wiki', 'wiki/global/nrr-retention.md', 'bi', 'raw-sources/bi/account_retention.view.lkml', 'derived_from', 0.85],
|
||||
['wiki', 'wiki/global/segment-classification.md', 'warehouse', 'plans', 'describes', 1],
|
||||
[
|
||||
'wiki',
|
||||
'knowledge/global/segment-classification.md',
|
||||
'wiki/global/segment-classification.md',
|
||||
'notion',
|
||||
'raw-sources/notion/sales-ops-segmentation-guide.md',
|
||||
'derived_from',
|
||||
|
|
@ -269,25 +269,25 @@ const provenanceLinks = [
|
|||
],
|
||||
[
|
||||
'wiki',
|
||||
'knowledge/global/activation-policy.md',
|
||||
'wiki/global/activation-policy.md',
|
||||
'notion',
|
||||
'raw-sources/notion/activation-policy-decision-record.md',
|
||||
'derived_from',
|
||||
0.95,
|
||||
],
|
||||
['wiki', 'knowledge/global/procurement-workflows.md', 'warehouse', 'purchase_requests', 'describes', 1],
|
||||
['wiki', 'wiki/global/procurement-workflows.md', 'warehouse', 'purchase_requests', 'describes', 1],
|
||||
[
|
||||
'wiki',
|
||||
'knowledge/global/customer-health-scoring.md',
|
||||
'wiki/global/customer-health-scoring.md',
|
||||
'notion',
|
||||
'raw-sources/notion/customer-health-playbook.md',
|
||||
'derived_from',
|
||||
0.9,
|
||||
],
|
||||
['wiki', 'knowledge/global/customer-health-scoring.md', 'warehouse', 'support_tickets', 'describes', 1],
|
||||
['wiki', 'wiki/global/customer-health-scoring.md', 'warehouse', 'support_tickets', 'describes', 1],
|
||||
[
|
||||
'wiki',
|
||||
'knowledge/global/support-escalation.md',
|
||||
'wiki/global/support-escalation.md',
|
||||
'notion',
|
||||
'raw-sources/notion/support-escalation-runbook.md',
|
||||
'derived_from',
|
||||
|
|
@ -295,7 +295,7 @@ const provenanceLinks = [
|
|||
],
|
||||
[
|
||||
'wiki',
|
||||
'knowledge/global/internal-test-exclusion.md',
|
||||
'wiki/global/internal-test-exclusion.md',
|
||||
'notion',
|
||||
'raw-sources/notion/analyst-onboarding.md',
|
||||
'derived_from',
|
||||
|
|
@ -490,7 +490,7 @@ function buildActions() {
|
|||
unitKey: 'revenue-and-contracts',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/arr-contract-first.md',
|
||||
key: 'wiki/global/arr-contract-first.md',
|
||||
summary: 'ARR follows contract precedence with cancellation and discount caveats.',
|
||||
rawFiles: ['contracts', 'arr_movements', 'raw-sources/notion/arr-and-contract-reporting-notes.md'],
|
||||
status: 'success',
|
||||
|
|
@ -499,7 +499,7 @@ function buildActions() {
|
|||
unitKey: 'revenue-and-contracts',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/revenue-gross-to-net.md',
|
||||
key: 'wiki/global/revenue-gross-to-net.md',
|
||||
summary: 'Invoice, refund, and revenue dashboard evidence reconcile gross to net revenue.',
|
||||
rawFiles: ['invoices', 'raw-sources/bi/revenue_exec.dashboard.lookml'],
|
||||
status: 'success',
|
||||
|
|
@ -508,7 +508,7 @@ function buildActions() {
|
|||
unitKey: 'revenue-and-contracts',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/discount-expiration.md',
|
||||
key: 'wiki/global/discount-expiration.md',
|
||||
summary: 'Discount expiration is separated from organic contraction for retention reporting.',
|
||||
rawFiles: ['contracts', 'arr_movements'],
|
||||
status: 'success',
|
||||
|
|
@ -544,7 +544,7 @@ function buildActions() {
|
|||
unitKey: 'retention-and-segments',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/nrr-retention.md',
|
||||
key: 'wiki/global/nrr-retention.md',
|
||||
summary: 'NRR uses parent-account rollups and quarterly ARR movement windows.',
|
||||
rawFiles: ['accounts', 'arr_movements', 'raw-sources/notion/retention-and-nrr-definition-notes.md'],
|
||||
status: 'success',
|
||||
|
|
@ -553,7 +553,7 @@ function buildActions() {
|
|||
unitKey: 'retention-and-segments',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/segment-classification.md',
|
||||
key: 'wiki/global/segment-classification.md',
|
||||
summary: 'Segment labels come from plan mapping and sales-ops policy notes.',
|
||||
rawFiles: ['accounts', 'plans', 'raw-sources/notion/sales-ops-segmentation-guide.md'],
|
||||
status: 'success',
|
||||
|
|
@ -571,7 +571,7 @@ function buildActions() {
|
|||
unitKey: 'procurement-and-activation',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/activation-policy.md',
|
||||
key: 'wiki/global/activation-policy.md',
|
||||
summary: 'Activation policy changed on January 15, 2026 and is encoded for agents.',
|
||||
rawFiles: ['purchase_requests', 'users', 'raw-sources/notion/activation-policy-decision-record.md'],
|
||||
status: 'success',
|
||||
|
|
@ -580,7 +580,7 @@ function buildActions() {
|
|||
unitKey: 'procurement-and-activation',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/procurement-workflows.md',
|
||||
key: 'wiki/global/procurement-workflows.md',
|
||||
summary: 'Procurement requester activity and approval events explain product usage.',
|
||||
rawFiles: ['purchase_requests', 'raw-sources/bi/procurement_activity.view.lkml'],
|
||||
status: 'success',
|
||||
|
|
@ -598,7 +598,7 @@ function buildActions() {
|
|||
unitKey: 'support-and-health',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/customer-health-scoring.md',
|
||||
key: 'wiki/global/customer-health-scoring.md',
|
||||
summary: 'Customer health combines support severity, ARR exposure, and product usage.',
|
||||
rawFiles: ['support_tickets', 'raw-sources/notion/customer-health-playbook.md'],
|
||||
status: 'success',
|
||||
|
|
@ -607,7 +607,7 @@ function buildActions() {
|
|||
unitKey: 'support-and-health',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/support-escalation.md',
|
||||
key: 'wiki/global/support-escalation.md',
|
||||
summary: 'Escalation tiers map ticket severity to SLA expectations.',
|
||||
rawFiles: ['support_tickets', 'raw-sources/notion/support-escalation-runbook.md'],
|
||||
status: 'success',
|
||||
|
|
@ -625,7 +625,7 @@ function buildActions() {
|
|||
unitKey: 'governance-and-exclusions',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/internal-test-exclusion.md',
|
||||
key: 'wiki/global/internal-test-exclusion.md',
|
||||
summary: 'Canonical metrics exclude internal and test accounts across source families.',
|
||||
rawFiles: ['raw-sources/notion/analyst-onboarding.md'],
|
||||
status: 'success',
|
||||
|
|
@ -665,27 +665,27 @@ function buildReplay(provenance, transcripts) {
|
|||
{ type: 'raw_snapshot_written', syncId: 'demo-seeded-sync', rawFileCount: 29 },
|
||||
{ type: 'diff_computed', added: 29, modified: 0, deleted: 0, unchanged: 0 },
|
||||
{ type: 'chunks_planned', chunkCount: 5, workUnitCount: 5, evictionCount: 0 },
|
||||
{ type: 'work_unit_started', unitKey: 'revenue-and-contracts', skills: ['knowledge_capture', 'sl_capture'], stepBudget: 40 },
|
||||
{ type: 'work_unit_started', unitKey: 'revenue-and-contracts', skills: ['wiki_capture', 'sl_capture'], stepBudget: 40 },
|
||||
{
|
||||
type: 'candidate_action',
|
||||
unitKey: 'revenue-and-contracts',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/arr-contract-first.md',
|
||||
key: 'wiki/global/arr-contract-first.md',
|
||||
},
|
||||
{
|
||||
type: 'candidate_action',
|
||||
unitKey: 'revenue-and-contracts',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/revenue-gross-to-net.md',
|
||||
key: 'wiki/global/revenue-gross-to-net.md',
|
||||
},
|
||||
{
|
||||
type: 'candidate_action',
|
||||
unitKey: 'revenue-and-contracts',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/discount-expiration.md',
|
||||
key: 'wiki/global/discount-expiration.md',
|
||||
},
|
||||
{
|
||||
type: 'candidate_action',
|
||||
|
|
@ -709,20 +709,20 @@ function buildReplay(provenance, transcripts) {
|
|||
key: 'orbit_demo.arr_movements',
|
||||
},
|
||||
{ type: 'work_unit_finished', unitKey: 'revenue-and-contracts', status: 'success' },
|
||||
{ type: 'work_unit_started', unitKey: 'retention-and-segments', skills: ['knowledge_capture', 'sl_capture'], stepBudget: 40 },
|
||||
{ type: 'work_unit_started', unitKey: 'retention-and-segments', skills: ['wiki_capture', 'sl_capture'], stepBudget: 40 },
|
||||
{
|
||||
type: 'candidate_action',
|
||||
unitKey: 'retention-and-segments',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/nrr-retention.md',
|
||||
key: 'wiki/global/nrr-retention.md',
|
||||
},
|
||||
{
|
||||
type: 'candidate_action',
|
||||
unitKey: 'retention-and-segments',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/segment-classification.md',
|
||||
key: 'wiki/global/segment-classification.md',
|
||||
},
|
||||
{
|
||||
type: 'candidate_action',
|
||||
|
|
@ -735,7 +735,7 @@ function buildReplay(provenance, transcripts) {
|
|||
{
|
||||
type: 'work_unit_started',
|
||||
unitKey: 'procurement-and-activation',
|
||||
skills: ['knowledge_capture', 'sl_capture'],
|
||||
skills: ['wiki_capture', 'sl_capture'],
|
||||
stepBudget: 40,
|
||||
},
|
||||
{
|
||||
|
|
@ -743,14 +743,14 @@ function buildReplay(provenance, transcripts) {
|
|||
unitKey: 'procurement-and-activation',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/activation-policy.md',
|
||||
key: 'wiki/global/activation-policy.md',
|
||||
},
|
||||
{
|
||||
type: 'candidate_action',
|
||||
unitKey: 'procurement-and-activation',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/procurement-workflows.md',
|
||||
key: 'wiki/global/procurement-workflows.md',
|
||||
},
|
||||
{
|
||||
type: 'candidate_action',
|
||||
|
|
@ -760,20 +760,20 @@ function buildReplay(provenance, transcripts) {
|
|||
key: 'orbit_demo.purchase_requests',
|
||||
},
|
||||
{ type: 'work_unit_finished', unitKey: 'procurement-and-activation', status: 'success' },
|
||||
{ type: 'work_unit_started', unitKey: 'support-and-health', skills: ['knowledge_capture', 'sl_capture'], stepBudget: 40 },
|
||||
{ type: 'work_unit_started', unitKey: 'support-and-health', skills: ['wiki_capture', 'sl_capture'], stepBudget: 40 },
|
||||
{
|
||||
type: 'candidate_action',
|
||||
unitKey: 'support-and-health',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/customer-health-scoring.md',
|
||||
key: 'wiki/global/customer-health-scoring.md',
|
||||
},
|
||||
{
|
||||
type: 'candidate_action',
|
||||
unitKey: 'support-and-health',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/support-escalation.md',
|
||||
key: 'wiki/global/support-escalation.md',
|
||||
},
|
||||
{
|
||||
type: 'candidate_action',
|
||||
|
|
@ -783,13 +783,13 @@ function buildReplay(provenance, transcripts) {
|
|||
key: 'orbit_demo.support_tickets',
|
||||
},
|
||||
{ type: 'work_unit_finished', unitKey: 'support-and-health', status: 'success' },
|
||||
{ type: 'work_unit_started', unitKey: 'governance-and-exclusions', skills: ['knowledge_capture'], stepBudget: 40 },
|
||||
{ type: 'work_unit_started', unitKey: 'governance-and-exclusions', skills: ['wiki_capture'], stepBudget: 40 },
|
||||
{
|
||||
type: 'candidate_action',
|
||||
unitKey: 'governance-and-exclusions',
|
||||
target: 'wiki',
|
||||
action: 'created',
|
||||
key: 'knowledge/global/internal-test-exclusion.md',
|
||||
key: 'wiki/global/internal-test-exclusion.md',
|
||||
},
|
||||
{ type: 'work_unit_finished', unitKey: 'governance-and-exclusions', status: 'success' },
|
||||
{ type: 'reconciliation_finished', conflictCount: 0, fallbackCount: 0 },
|
||||
|
|
@ -835,7 +835,7 @@ function buildReplay(provenance, transcripts) {
|
|||
|
||||
async function writeGeneratedContext(rowCounts) {
|
||||
for (const page of knowledgePages) {
|
||||
await writeText(join('knowledge/global', page.file), renderKnowledgePage(page));
|
||||
await writeText(join('wiki/global', page.file), renderKnowledgePage(page));
|
||||
}
|
||||
|
||||
for (const table of semanticLayerTables) {
|
||||
|
|
@ -908,7 +908,7 @@ async function writeGeneratedContext(rowCounts) {
|
|||
},
|
||||
generated: {
|
||||
semanticLayer: { path: 'semantic-layer/orbit_demo', sourceCount: 6 },
|
||||
knowledge: { path: 'knowledge/global', pageCount: 10 },
|
||||
knowledge: { path: 'wiki/global', pageCount: 10 },
|
||||
links: { path: 'links', linkCount: provenanceLinks.length },
|
||||
},
|
||||
});
|
||||
|
|
@ -930,7 +930,7 @@ for (const relativeDir of [
|
|||
'raw-sources/bi',
|
||||
'raw-sources/notion',
|
||||
'semantic-layer/orbit_demo',
|
||||
'knowledge/global',
|
||||
'wiki/global',
|
||||
'links',
|
||||
'reports',
|
||||
]) {
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ describe('demo assets', () => {
|
|||
|
||||
await expect(access(packagedDemoAssetPath('semantic-layer/dbt-main/mart_arr_daily.yaml'))).resolves.toBeUndefined();
|
||||
await expect(access(packagedDemoAssetPath('semantic-layer/postgres-warehouse/mart_account_activity.yaml'))).resolves.toBeUndefined();
|
||||
await expect(access(packagedDemoAssetPath('knowledge/global/orbit-company-overview.md'))).resolves.toBeUndefined();
|
||||
await expect(access(packagedDemoAssetPath('wiki/global/orbit-company-overview.md'))).resolves.toBeUndefined();
|
||||
await expect(access(packagedDemoAssetPath('links/provenance.json'))).resolves.toBeUndefined();
|
||||
await expect(access(packagedDemoAssetPath('reports/seeded-demo-report.json'))).resolves.toBeUndefined();
|
||||
});
|
||||
|
|
@ -108,7 +108,7 @@ describe('demo assets', () => {
|
|||
await expect(access(join(projectDir, 'state.sqlite'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, 'reports'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, 'semantic-layer'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, 'knowledge'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, 'wiki'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, 'replays', 'replay.memory-flow.v1.json'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, 'raw-sources'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, '_schema'))).rejects.toMatchObject({ code: 'ENOENT' });
|
||||
|
|
@ -129,7 +129,7 @@ describe('demo assets', () => {
|
|||
await ensureSeededDemoProject({ projectDir, force: false });
|
||||
|
||||
await expect(access(join(projectDir, 'semantic-layer', 'dbt-main', 'mart_arr_daily.yaml'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, 'knowledge', 'global', 'orbit-company-overview.md'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, 'wiki', 'global', 'orbit-company-overview.md'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, 'links', 'provenance.json'))).resolves.toBeUndefined();
|
||||
await expect(access(join(projectDir, 'reports', 'seeded-demo-report.json'))).resolves.toBeUndefined();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ const REQUIRED_SEEDED_ASSET_PATHS = [
|
|||
DEMO_REPLAY_FILE,
|
||||
join('semantic-layer', 'dbt-main', 'mart_arr_daily.yaml'),
|
||||
join('semantic-layer', 'postgres-warehouse', 'mart_account_activity.yaml'),
|
||||
join('knowledge', 'global', 'orbit-company-overview.md'),
|
||||
join('wiki', 'global', 'orbit-company-overview.md'),
|
||||
] as const;
|
||||
|
||||
function assetDir(): string {
|
||||
|
|
@ -131,7 +131,7 @@ export async function ensureDemoProject(options: EnsureDemoProjectOptions): Prom
|
|||
}
|
||||
|
||||
await mkdir(projectDir, { recursive: true });
|
||||
for (const relativeDir of ['reports', 'semantic-layer', 'knowledge', 'replays', 'raw-sources', 'links']) {
|
||||
for (const relativeDir of ['reports', 'semantic-layer', 'wiki', 'replays', 'raw-sources', 'links']) {
|
||||
await mkdir(join(projectDir, relativeDir), { recursive: true });
|
||||
}
|
||||
|
||||
|
|
@ -157,7 +157,7 @@ async function copySeededAssetDirectories(projectDir: string): Promise<void> {
|
|||
|
||||
await Promise.all([
|
||||
copyDirIfExists(join(src, 'semantic-layer'), join(dest, 'semantic-layer')),
|
||||
copyDirIfExists(join(src, 'knowledge'), join(dest, 'knowledge')),
|
||||
copyDirIfExists(join(src, 'wiki'), join(dest, 'wiki')),
|
||||
copyDirIfExists(join(src, 'raw-sources'), join(dest, 'raw-sources')),
|
||||
copyDirIfExists(join(src, 'links'), join(dest, 'links')),
|
||||
copyDirIfExists(join(src, 'reports'), join(dest, 'reports')),
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ export function bundleReportSnapshot(): IngestReportSnapshot {
|
|||
rawFiles: ['cards/1.json', 'cards/2.json'],
|
||||
status: 'success',
|
||||
actions: [
|
||||
{ target: 'wiki', type: 'created', key: 'knowledge/global/revenue.md', detail: 'Revenue overview' },
|
||||
{ target: 'wiki', type: 'created', key: 'wiki/global/revenue.md', detail: 'Revenue overview' },
|
||||
{ target: 'sl', type: 'updated', key: 'warehouse.orders', detail: 'Added order amount measure' },
|
||||
],
|
||||
touchedSlSources: [{ connectionId: 'warehouse', sourceName: 'warehouse.orders' }],
|
||||
|
|
@ -178,7 +178,7 @@ export function bundleReportSnapshot(): IngestReportSnapshot {
|
|||
{
|
||||
rawPath: 'cards/1.json',
|
||||
artifactKind: 'wiki',
|
||||
artifactKey: 'knowledge/global/revenue.md',
|
||||
artifactKey: 'wiki/global/revenue.md',
|
||||
actionType: 'wiki_written',
|
||||
},
|
||||
{
|
||||
|
|
@ -194,7 +194,7 @@ export function bundleReportSnapshot(): IngestReportSnapshot {
|
|||
path: 'tool-transcripts/cards.jsonl',
|
||||
toolCallCount: 4,
|
||||
errorCount: 0,
|
||||
toolNames: ['ingest_triage', 'knowledge_capture', 'sl_capture'],
|
||||
toolNames: ['ingest_triage', 'wiki_capture', 'sl_capture'],
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ describe('runKtxKnowledge', () => {
|
|||
await rm(tempDir, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
it('writes, reads, lists, and searches knowledge pages', async () => {
|
||||
it('writes, reads, lists, and searches wiki pages', async () => {
|
||||
const projectDir = join(tempDir, 'project');
|
||||
await initKtxProject({ projectDir, projectName: 'warehouse' });
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ describe('runKtxKnowledge', () => {
|
|||
writeIo.io,
|
||||
),
|
||||
).resolves.toBe(0);
|
||||
expect(writeIo.stdout()).toContain('Wrote knowledge/global/metrics-revenue.md');
|
||||
expect(writeIo.stdout()).toContain('Wrote wiki/global/metrics-revenue.md');
|
||||
|
||||
const readIo = makeIo();
|
||||
await expect(
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ export async function runKtxKnowledge(
|
|||
if (args.command === 'read') {
|
||||
const page = await readLocalKnowledgePage(project, { key: args.key, userId: args.userId });
|
||||
if (!page) {
|
||||
throw new Error(`Knowledge page "${args.key}" was not found`);
|
||||
throw new Error(`Wiki page "${args.key}" was not found`);
|
||||
}
|
||||
if (args.json) {
|
||||
writeJsonResult(io, {
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ function tableName(key: string): string {
|
|||
function humanizeInsight(key: string, target: 'sl' | 'wiki', summary: string | undefined): string {
|
||||
if (summary) return summary;
|
||||
const name = target === 'sl' ? tableName(key) : topicName(key);
|
||||
return target === 'sl' ? `Query definition: ${name}` : `Knowledge page: ${name}`;
|
||||
return target === 'sl' ? `Query definition: ${name}` : `Wiki page: ${name}`;
|
||||
}
|
||||
|
||||
const INTERNAL_DEMO_CONNECTION_ID = 'orbit_demo';
|
||||
|
|
@ -453,7 +453,7 @@ function CompletionSummary(props: {
|
|||
)}
|
||||
{wiki > 0 && (
|
||||
<Text color={props.theme.complete}>
|
||||
{' '}📝 {wiki} knowledge page{wiki === 1 ? '' : 's'} — so agents understand your business context
|
||||
{' '}📝 {wiki} wiki page{wiki === 1 ? '' : 's'} — so agents understand your business context
|
||||
</Text>
|
||||
)}
|
||||
</>
|
||||
|
|
|
|||
|
|
@ -46,9 +46,9 @@ function replay(): MemoryFlowReplayInput {
|
|||
{ type: 'raw_snapshot_written', syncId: 'sync-1', rawFileCount: 2 },
|
||||
{ type: 'diff_computed', added: 1, modified: 1, deleted: 0, unchanged: 0 },
|
||||
{ type: 'chunks_planned', chunkCount: 2, workUnitCount: 2, evictionCount: 0 },
|
||||
{ type: 'work_unit_started', unitKey: 'orders', skills: ['knowledge_capture'], stepBudget: 4 },
|
||||
{ type: 'work_unit_started', unitKey: 'orders', skills: ['wiki_capture'], stepBudget: 4 },
|
||||
{ type: 'work_unit_finished', unitKey: 'orders', status: 'success' },
|
||||
{ type: 'work_unit_started', unitKey: 'customers', skills: ['knowledge_capture'], stepBudget: 4 },
|
||||
{ type: 'work_unit_started', unitKey: 'customers', skills: ['wiki_capture'], stepBudget: 4 },
|
||||
{ type: 'work_unit_finished', unitKey: 'customers', status: 'failed', reason: 'validation reset' },
|
||||
{ type: 'reconciliation_finished', conflictCount: 0, fallbackCount: 1 },
|
||||
{ type: 'saved', commitSha: 'abc12345', wikiCount: 1, slCount: 1 },
|
||||
|
|
|
|||
|
|
@ -23,10 +23,10 @@ function replayInput(): MemoryFlowReplayInput {
|
|||
],
|
||||
details: {
|
||||
actions: [
|
||||
{ unitKey: 'orders', target: 'wiki', action: 'created', key: 'knowledge/orders.md', summary: 'order lifecycle', rawFiles: ['orders'], status: 'success' },
|
||||
{ unitKey: 'orders', target: 'wiki', action: 'created', key: 'wiki/orders.md', summary: 'order lifecycle', rawFiles: ['orders'], status: 'success' },
|
||||
{ unitKey: 'customers', target: 'sl', action: 'updated', key: 'orbit_demo.customers', summary: 'customer metrics', rawFiles: ['customers'], status: 'success' },
|
||||
],
|
||||
provenance: [{ rawPath: 'orders', artifactKind: 'wiki', artifactKey: 'knowledge/orders.md', actionType: 'wiki_written' }],
|
||||
provenance: [{ rawPath: 'orders', artifactKind: 'wiki', artifactKey: 'wiki/orders.md', actionType: 'wiki_written' }],
|
||||
transcripts: [{ unitKey: 'orders', path: '/tmp/t.jsonl', toolCallCount: 2, errorCount: 0, toolNames: ['read_raw_span', 'wiki_write'] }],
|
||||
},
|
||||
events: [
|
||||
|
|
@ -35,8 +35,8 @@ function replayInput(): MemoryFlowReplayInput {
|
|||
{ type: 'raw_snapshot_written', syncId: 'sync-1', rawFileCount: 2 },
|
||||
{ type: 'diff_computed', added: 1, modified: 1, deleted: 0, unchanged: 0 },
|
||||
{ type: 'chunks_planned', chunkCount: 2, workUnitCount: 2, evictionCount: 0 },
|
||||
{ type: 'work_unit_started', unitKey: 'orders', skills: ['knowledge_capture'], stepBudget: 40 },
|
||||
{ type: 'candidate_action', unitKey: 'orders', target: 'wiki', action: 'created', key: 'knowledge/orders.md' },
|
||||
{ type: 'work_unit_started', unitKey: 'orders', skills: ['wiki_capture'], stepBudget: 40 },
|
||||
{ type: 'candidate_action', unitKey: 'orders', target: 'wiki', action: 'created', key: 'wiki/orders.md' },
|
||||
{ type: 'work_unit_finished', unitKey: 'orders', status: 'success' },
|
||||
{ type: 'work_unit_started', unitKey: 'customers', skills: ['sl_capture'], stepBudget: 40 },
|
||||
{ type: 'candidate_action', unitKey: 'customers', target: 'sl', action: 'updated', key: 'orbit_demo.customers' },
|
||||
|
|
@ -220,7 +220,7 @@ describe('MemoryFlowTuiApp', () => {
|
|||
{ type: 'source_acquired', adapter: 'live-database', trigger: 'manual_resync', fileCount: 1 },
|
||||
{ type: 'diff_computed', added: 1, modified: 0, deleted: 0, unchanged: 0 },
|
||||
{ type: 'chunks_planned', chunkCount: 1, workUnitCount: 1, evictionCount: 0 },
|
||||
{ type: 'work_unit_started', unitKey: 'orders', skills: ['knowledge_capture'], stepBudget: 40 },
|
||||
{ type: 'work_unit_started', unitKey: 'orders', skills: ['wiki_capture'], stepBudget: 40 },
|
||||
],
|
||||
plannedWorkUnits: [{ unitKey: 'orders', rawFiles: ['orders'], peerFileCount: 0, dependencyCount: 1 }],
|
||||
};
|
||||
|
|
@ -240,7 +240,7 @@ describe('MemoryFlowTuiApp', () => {
|
|||
{ type: 'source_acquired', adapter: 'dbt-descriptions', trigger: 'manual_resync', fileCount: 3 },
|
||||
{ type: 'diff_computed', added: 11, modified: 0, deleted: 0, unchanged: 0 },
|
||||
{ type: 'chunks_planned', chunkCount: 1, workUnitCount: 1, evictionCount: 0 },
|
||||
{ type: 'work_unit_started', unitKey: 'orders', skills: ['knowledge_capture'], stepBudget: 40 },
|
||||
{ type: 'work_unit_started', unitKey: 'orders', skills: ['wiki_capture'], stepBudget: 40 },
|
||||
],
|
||||
plannedWorkUnits: [{ unitKey: 'orders', rawFiles: ['orders'], peerFileCount: 0, dependencyCount: 1 }],
|
||||
};
|
||||
|
|
|
|||
|
|
@ -257,9 +257,9 @@ describe('setup context build state', () => {
|
|||
it('marks context complete without prompting when initial source ingest already made agent context', async () => {
|
||||
await writeReadyProject(tempDir);
|
||||
await mkdir(join(tempDir, 'semantic-layer', 'dbt-main'), { recursive: true });
|
||||
await mkdir(join(tempDir, 'knowledge', 'global'), { recursive: true });
|
||||
await mkdir(join(tempDir, 'wiki', 'global'), { recursive: true });
|
||||
await writeFile(join(tempDir, 'semantic-layer', 'dbt-main', 'mart_revenue_daily.yaml'), 'name: mart_revenue_daily\n');
|
||||
await writeFile(join(tempDir, 'knowledge', 'global', 'metrics.md'), '# Metrics\n');
|
||||
await writeFile(join(tempDir, 'wiki', 'global', 'metrics.md'), '# Metrics\n');
|
||||
await writeReadyEnrichedScanReport(tempDir);
|
||||
const io = makeIo();
|
||||
const runContextBuildMock = vi.fn(async () => ({ exitCode: 0, detached: false }));
|
||||
|
|
@ -332,8 +332,8 @@ describe('setup context build state', () => {
|
|||
await writeFile(join(tempDir, 'semantic-layer', 'warehouse', '_schema', 'public.yaml'), 'tables: {}\n');
|
||||
const io = makeIo();
|
||||
const runContextBuildMock = vi.fn(async () => {
|
||||
await mkdir(join(tempDir, 'knowledge', 'global'), { recursive: true });
|
||||
await writeFile(join(tempDir, 'knowledge', 'global', 'metrics.md'), '# Metrics\n');
|
||||
await mkdir(join(tempDir, 'wiki', 'global'), { recursive: true });
|
||||
await writeFile(join(tempDir, 'wiki', 'global', 'metrics.md'), '# Metrics\n');
|
||||
await writeReadyEnrichedScanReport(tempDir);
|
||||
return { exitCode: 0, detached: false };
|
||||
});
|
||||
|
|
|
|||
|
|
@ -441,7 +441,7 @@ async function defaultVerifyContextReady(projectDir: string): Promise<KtxSetupCo
|
|||
ignoredDirectoryNames: new Set(['_schema']),
|
||||
},
|
||||
);
|
||||
const wikiReady = await hasFileWithExtension(join(projectDir, 'knowledge'), new Set(['.md']));
|
||||
const wikiReady = await hasFileWithExtension(join(projectDir, 'wiki'), new Set(['.md']));
|
||||
const contextSourceReady =
|
||||
targets.contextSourceConnectionIds.length === 0 || semanticLayerContextReady || wikiReady;
|
||||
const ready = primarySourceScans.ready && contextSourceReady;
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ function renderDemoContextCompletionSummary(): string {
|
|||
'',
|
||||
' KTX created:',
|
||||
` ${cyan('📊')} 46 semantic layer definitions`,
|
||||
` ${cyan('📝')} 28 knowledge pages`,
|
||||
` ${cyan('📝')} 28 wiki pages`,
|
||||
'',
|
||||
` ${dim('Press Enter to continue, Escape to go back')}`,
|
||||
'',
|
||||
|
|
@ -354,7 +354,7 @@ export async function runDemoTour(
|
|||
if (step === 'databases') {
|
||||
direction = await renderDemoCard('Database connection', ['PostgreSQL — Orbit Analytics (56 tables, 2 schemas)'], io, undefined, waitNav, projectDir);
|
||||
} else if (step === 'sources') {
|
||||
direction = await renderDemoCard('Context sources', ['dbt — 34 transformation models', 'Metabase — 80 dashboard cards', 'Notion — 9 knowledge pages'], io, undefined, waitNav, projectDir);
|
||||
direction = await renderDemoCard('Context sources', ['dbt — 34 transformation models', 'Metabase — 80 dashboard cards', 'Notion — 9 wiki pages'], io, undefined, waitNav, projectDir);
|
||||
} else if (step === 'context') {
|
||||
io.stdout.write(renderDemoBanner(projectDir) + '\n\n');
|
||||
if (deps.skipReplayAnimation) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue