@unoverse-platform/studio 0.1.97 → 0.1.98

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 (118) hide show
  1. package/bin/studio.mjs +2 -2
  2. package/local/catalog.ts +5 -1
  3. package/local/nodes.ts +28 -41
  4. package/local/plugin.ts +71 -13
  5. package/local/sample-identity/brand.yaml +24 -0
  6. package/local/sample-identity/organisation.yaml +14 -0
  7. package/local/sample-identity/purpose.yaml +14 -0
  8. package/local/sample-identity/story.yaml +18 -0
  9. package/local/scaffold.mjs +43 -23
  10. package/local/source.ts +3 -8
  11. package/package.json +1 -1
  12. package/screens/AgentsView.tsx +173 -0
  13. package/screens/ComponentsView.tsx +2 -2
  14. package/screens/EmptyLibrary.tsx +1 -1
  15. package/screens/IdentityView.tsx +3 -3
  16. package/screens/PromptBlocksView.tsx +1 -1
  17. package/screens/TemplatesLibraryView.tsx +91 -6
  18. package/screens/TemplatesView.tsx +24 -9
  19. package/screens/index.ts +2 -0
  20. package/src/App.tsx +8 -3
  21. package/src/host.ts +1 -14
  22. package/vendor/base/src/agent-mcp/discovery.ts +76 -18
  23. package/vendor/base/src/agent-mcp/handoff.ts +11 -31
  24. package/vendor/base/src/agent-mcp/index.ts +5 -5
  25. package/vendor/base/src/agent-mcp/invoke.ts +37 -19
  26. package/vendor/base/src/agent-mcp/lean.ts +19 -0
  27. package/vendor/base/src/agent-mcp/memoryContext.ts +15 -9
  28. package/vendor/base/src/agent-mcp/memoryIngest.ts +8 -3
  29. package/vendor/base/src/agent-mcp/rowComponents.ts +184 -72
  30. package/vendor/base/src/agent-mcp/tools.ts +136 -7
  31. package/vendor/base/src/agent-mcp/types.ts +47 -10
  32. package/vendor/base/src/definitions/load/compile/component.ts +59 -4
  33. package/vendor/base/src/definitions/load/compile/sections.ts +7 -1
  34. package/vendor/base/src/definitions/load/compile/template.ts +19 -15
  35. package/vendor/base/src/definitions/load/expand/inherit.ts +5 -1
  36. package/vendor/base/src/definitions/load/expand/referenced.ts +21 -2
  37. package/vendor/base/src/definitions/load/expand/refs.ts +14 -0
  38. package/vendor/base/src/definitions/load/expand/walk.ts +88 -38
  39. package/vendor/base/src/definitions/load/load.ts +37 -28
  40. package/vendor/base/src/definitions/model.ts +8 -12
  41. package/vendor/base/src/definitions/registry/agents.ts +111 -0
  42. package/vendor/base/src/definitions/registry/catalog.ts +28 -12
  43. package/vendor/base/src/definitions/registry/datasetSql.ts +149 -0
  44. package/vendor/base/src/definitions/registry/homes.ts +69 -5
  45. package/vendor/base/src/definitions/registry/objects.ts +413 -0
  46. package/vendor/base/src/definitions/registry/orgDocuments.ts +69 -29
  47. package/vendor/base/src/definitions/registry/orgPack.ts +11 -11
  48. package/vendor/base/src/definitions/registry/pipelines.ts +197 -0
  49. package/vendor/base/src/definitions/theme.ts +1 -2
  50. package/vendor/base/src/items/collect.ts +29 -25
  51. package/vendor/base/src/items/publish.ts +30 -6
  52. package/vendor/base/src/lint/context.mjs +17 -0
  53. package/vendor/base/src/lint/design/file.mjs +199 -2
  54. package/vendor/base/src/lint/design/index.mjs +66 -73
  55. package/vendor/base/src/lint/design/vocabulary.mjs +5 -2
  56. package/vendor/base/src/lint/design/walk.mjs +14 -4
  57. package/vendor/base/src/lint/index.mjs +15 -9
  58. package/vendor/base/src/lint/nodes/blocks.mjs +6 -2
  59. package/vendor/base/src/lint/nodes/index.mjs +5 -0
  60. package/vendor/base/src/lint/nodes/node.mjs +157 -7
  61. package/vendor/base/src/lint/objects/index.d.mts +32 -0
  62. package/vendor/base/src/lint/objects/index.mjs +324 -0
  63. package/vendor/base/src/lint/objects/rules.d.mts +44 -0
  64. package/vendor/base/src/lint/objects/rules.mjs +446 -0
  65. package/vendor/base/src/lint/prompts/index.d.mts +34 -0
  66. package/vendor/base/src/lint/prompts/index.mjs +198 -0
  67. package/vendor/base/src/manifests/compose.ts +80 -9
  68. package/vendor/base/src/manifests/executor/callback.ts +15 -4
  69. package/vendor/base/src/manifests/executor/context.ts +9 -1
  70. package/vendor/base/src/manifests/executor/memory.ts +83 -3
  71. package/vendor/base/src/manifests/executor/session.ts +50 -0
  72. package/vendor/base/src/manifests/executor/toolBridge.ts +114 -49
  73. package/vendor/base/src/manifests/runtime/auth/aws.ts +14 -1
  74. package/vendor/base/src/manifests/runtime/channels/final.ts +46 -34
  75. package/vendor/base/src/manifests/runtime/channels/service.ts +30 -32
  76. package/vendor/base/src/manifests/runtime/channels/workflow.ts +6 -11
  77. package/vendor/base/src/manifests/runtime/context.ts +18 -6
  78. package/vendor/base/src/manifests/runtime/duplex/audioLane.ts +159 -3
  79. package/vendor/base/src/manifests/runtime/duplex/session.ts +304 -9
  80. package/vendor/base/src/manifests/runtime/events.ts +39 -3
  81. package/vendor/base/src/manifests/runtime/http/concurrency.ts +44 -0
  82. package/vendor/base/src/manifests/runtime/http/request.ts +36 -7
  83. package/vendor/base/src/manifests/runtime/index.ts +3 -2
  84. package/vendor/base/src/manifests/runtime/loops/repeat.ts +86 -0
  85. package/vendor/base/src/manifests/runtime/tools/toolloop.ts +30 -3
  86. package/vendor/base/src/manifests/runtime/usage.ts +10 -0
  87. package/vendor/base/src/paths.ts +16 -8
  88. package/vendor/base/src/platform/audioManager.ts +32 -0
  89. package/vendor/base/src/platform/executionContext.ts +14 -0
  90. package/vendor/base/src/platform/liveInput.ts +52 -0
  91. package/vendor/base/src/plugins/discovery.ts +1 -1
  92. package/vendor/base/src/template/SafeExpression.ts +6 -0
  93. package/vendor/base/src/workflow/GetMemoryService.ts +12 -11
  94. package/vendor/base/src/workflow/PlatformMemoryCore.ts +23 -10
  95. package/vendor/sdk/appEngine.tsx +30 -11
  96. package/vendor/sdk/lib/UnoverseComponent.tsx +8 -4
  97. package/vendor/sdk/lib/app.tsx +70 -95
  98. package/vendor/sdk/lib/connection.tsx +47 -57
  99. package/vendor/sdk/lib/core/actions.ts +6 -0
  100. package/vendor/sdk/lib/core/apps.ts +66 -81
  101. package/vendor/sdk/lib/core/client.ts +5 -14
  102. package/vendor/sdk/lib/core/connection.ts +30 -0
  103. package/vendor/sdk/lib/core/index.ts +2 -2
  104. package/vendor/sdk/lib/core/store.ts +90 -15
  105. package/vendor/sdk/lib/core/types.ts +9 -8
  106. package/vendor/sdk/lib/primitives.tsx +113 -4
  107. package/vendor/sdk/lib/realtime/useAudioPlayback.ts +8 -1
  108. package/vendor/sdk/lib/render.tsx +3 -3
  109. package/vendor/sdk/lib/voice.tsx +27 -13
  110. package/local/sample-identity/brand/brand.yaml +0 -88
  111. package/local/sample-identity/brand/manifest.yaml +0 -13
  112. package/local/sample-identity/organisation/manifest.yaml +0 -15
  113. package/local/sample-identity/organisation/organisation.yaml +0 -53
  114. package/local/sample-identity/purpose/manifest.yaml +0 -12
  115. package/local/sample-identity/purpose/purpose.yaml +0 -46
  116. package/local/sample-identity/story/manifest.yaml +0 -12
  117. package/local/sample-identity/story/story.yaml +0 -63
  118. package/vendor/base/src/definitions/registry/identitySeed.ts +0 -17
@@ -1,53 +0,0 @@
1
- unoverse: "1.0"
2
- # THE ORGANISATION, declared the way a component declares its props. Each prop's description
3
- # is the brief: direction to the writer that fills it, including what not to do. The
4
- # platform compiles briefs into a tool schema, so an Agent fills this from research the way
5
- # a copywriter fills an email, and a person reads the same words as guidance. The defaults
6
- # are this org's own words, as they stand.
7
- type: identity
8
- name: organisation
9
- category: Identity
10
- props:
11
- name:
12
- type: string
13
- input: true
14
- description: >-
15
- The org's name as it trades, exactly as its website writes it in its own header or
16
- footer. Never a legal suffix unless the site uses one.
17
- maxLength: 80
18
- default: ""
19
- what:
20
- type: string
21
- input: true
22
- description: >-
23
- One paragraph, 60 to 120 words, in the third person: what the business is, what it
24
- does, whom it serves, where. Taken from the site's own about, home and footer copy.
25
- This paragraph grounds every extraction, so it must name the business's actual lines
26
- of work, not adjectives. Never a slogan, never an industry generality.
27
- maxLength: 900
28
- default: ""
29
- units:
30
- type: array
31
- input: true
32
- description: >-
33
- The organisation map: every unit the organisation names in its own publications, the
34
- ones that face customers (divisions, lines of business, regions) and the ones that run
35
- the organisation (operations, technology, people and HR, finance, risk, legal,
36
- marketing, and the rest). Sources: the about and careers pages, the annual report's
37
- organisation or leadership section, a published org chart. One entry per unit with its
38
- name as the organisation writes it and one sentence on what it does or serves, nested
39
- in `units` where the organisation nests them. Empty when the sources name none; never
40
- invented.
41
- maxItems: 40
42
- default: []
43
- vocabulary:
44
- type: string
45
- input: true
46
- description: >-
47
- The words the business uses, as one paragraph separated by semicolons: its product and
48
- service names as it spells them, its programme and membership names, the terms it uses
49
- for its customers, and anything it capitalises. Every name is copied from the site,
50
- never paraphrased. This is the domain prompt every extraction reads, so completeness
51
- beats elegance.
52
- maxLength: 2000
53
- default: ""
@@ -1,12 +0,0 @@
1
- # The Purpose (docs/edgy/elements/purpose.md): why the enterprise exists and the goals it pursues.
2
- # Published, it is one row on the org's map, found by meaning.
3
- title: Purpose
4
- description: >-
5
- Why the organisation exists: what its people believe in, what it aims to achieve, and the
6
- goals it is working toward.
7
- whenToUse: >-
8
- Answer why the organisation exists, what its people believe in, what it aims to achieve
9
- and the goals it is working toward. Read before the Brand, which represents it. Not for
10
- its history or its scale, that is the Story, and not for its products.
11
- category: Identity
12
- version: 1.0.0
@@ -1,46 +0,0 @@
1
- unoverse: "1.0"
2
- # THE PURPOSE, declared the way a component declares its props: each description is the brief
3
- # the writer follows; the defaults are this org's own words, as they stand.
4
- type: identity
5
- name: purpose
6
- category: Identity
7
- props:
8
- statement:
9
- type: string
10
- input: true
11
- description: >-
12
- Why the enterprise exists, in its own words: the purpose or mission statement it
13
- publishes, quoted where one exists. When it publishes none, one sentence composed only
14
- from what its about page says it is for. Never a marketing slogan.
15
- maxLength: 400
16
- default: ""
17
- values:
18
- type: array
19
- input: true
20
- description: >-
21
- What the people of the enterprise believe in and consider valuable: the values it
22
- publishes, each with its name as the enterprise writes it and the one sentence it
23
- gives for it. From the values, culture or about pages. Empty when none are published;
24
- never invented.
25
- maxItems: 8
26
- default: []
27
- ambition:
28
- type: string
29
- input: true
30
- description: >-
31
- The far end of the purpose: what the enterprise says it aims to achieve for its
32
- customers, its country or society, in one paragraph, quoted where a vision or ambition
33
- statement exists, with the horizon it names. Not the goals below; the outcome they
34
- serve.
35
- maxLength: 700
36
- default: ""
37
- goals:
38
- type: array
39
- input: true
40
- description: >-
41
- The goal tree: the strategic goals, pillars or commitments the enterprise names (a
42
- strategy page, a strategy section of the annual report, 'our commitments'). One entry
43
- per goal with its name as the enterprise writes it and one sentence on why, nested in
44
- `goals` where it nests them. Empty when none are named; never invented.
45
- maxItems: 12
46
- default: []
@@ -1,12 +0,0 @@
1
- # The Story (docs/edgy/elements/story.md): the way the enterprise makes sense of itself.
2
- # History, present, vision. Published, it is one row on the org's map, found by meaning.
3
- title: Story
4
- description: >-
5
- Where the organisation came from, what it is now and where it is going, and what that
6
- story says it is for.
7
- whenToUse: >-
8
- Answer when and how the organisation began, its milestones, what it is today (its scale,
9
- its lines of business), where it says it is going, and whom its story is about. Read with
10
- the Purpose, which it puts in context. Not for why it exists, that is the Purpose.
11
- category: Identity
12
- version: 1.0.0
@@ -1,63 +0,0 @@
1
- unoverse: "1.0"
2
- # THE STORY, declared the way a component declares its props: each description is the brief
3
- # the writer follows; the defaults are this org's own words, as they stand.
4
- type: identity
5
- name: story
6
- category: Identity
7
- props:
8
- history:
9
- type: string
10
- input: true
11
- description: >-
12
- Where the enterprise came from, one paragraph of 60 to 120 words: founding year and
13
- place, the names it has carried, the mergers and milestones its about or history page
14
- states, in order. Only dated facts it gives; empty when it gives none.
15
- maxLength: 900
16
- default: ""
17
- milestones:
18
- type: array
19
- input: true
20
- description: >-
21
- The story's beats, in order: one entry per dated event the enterprise itself records
22
- (a founding, a merger, a name, a first, a listing), with the year as its name and one
23
- sentence on what happened and why it mattered. From its history page, its timeline or
24
- its annual report. Empty when it records none; never invented.
25
- maxItems: 20
26
- default: []
27
- present:
28
- type: string
29
- input: true
30
- description: >-
31
- What the enterprise is now, one paragraph of 60 to 120 words: its scale as it states
32
- it (customers, branches, countries, staff, assets), its main lines of business, its
33
- position in its market in its own words, with the date those figures carry.
34
- maxLength: 900
35
- default: ""
36
- vision:
37
- type: string
38
- input: true
39
- description: >-
40
- Where the enterprise is going, one paragraph: the vision, strategy or ambition it
41
- publishes, quoted where a vision statement exists, with the horizon it names (a year,
42
- a plan). Empty when it says nothing about the future.
43
- maxLength: 900
44
- default: ""
45
- people:
46
- type: string
47
- input: true
48
- description: >-
49
- Whom the story is about and for: the people the enterprise names as the protagonists
50
- of its story and the ones it tells it to (customers, employees, partners, a country, a
51
- community), in its own words. Empty when it names none.
52
- maxLength: 400
53
- default: ""
54
- meaning:
55
- type: string
56
- input: true
57
- description: >-
58
- What the story says the enterprise is for: one paragraph on how the history, the
59
- present and the vision explain why it does what it does, connecting them to the
60
- purpose (read purpose.yaml first). In the enterprise's own words where it makes the
61
- connection; empty when it does not.
62
- maxLength: 500
63
- default: ""
@@ -1,17 +0,0 @@
1
- /**
2
- * THE IDENTITY SEED: design/<org>/identity/, four definitions with their briefs written and
3
- * their defaults empty. GENERATED from the one source (the identity-defs script in the
4
- * session that ruled it, 2026-09-05) and mirrored file for file by
5
- * packages/studio/local/sample-identity/, which the Studio scaffold copies; a guard test
6
- * holds the two equal. Edit the briefs here and there together, or regenerate both.
7
- */
8
- export const IDENTITY_SEED: Readonly<Record<string, string>> = {
9
- "organisation/manifest.yaml": "# The Organisation (docs/edgy/elements/organisation.md): the one that owns this spatial. This\n# manifest says what the document is for; organisation.yaml is the document. It never sits\n# on the map: it is the scope on every row and the grounding every extraction and every\n# agent wakes with.\ntitle: Organisation\ndescription: >-\n Who this organisation is and what it does, in its own words, and the words it uses for its\n products, its customers and itself.\nwhenToUse: >-\n Ground any extraction, any agent or any piece of writing in who the organisation is and\n how it speaks. Read whole at wake, never searched for. Not for what it offers, that is the\n products on the map, and not for why it exists or where it came from, those are Purpose\n and Story.\ncategory: Identity\nversion: 1.0.0\n",
10
- "organisation/organisation.yaml": "unoverse: \"1.0\"\n# THE ORGANISATION, declared the way a component declares its props. Each prop's description\n# is the brief: direction to the writer that fills it, including what not to do. The\n# platform compiles briefs into a tool schema, so an Agent fills this from research the way\n# a copywriter fills an email, and a person reads the same words as guidance. The defaults\n# are this org's own words, as they stand.\ntype: identity\nname: organisation\ncategory: Identity\nprops:\n name:\n type: string\n input: true\n description: >-\n The org's name as it trades, exactly as its website writes it in its own header or\n footer. Never a legal suffix unless the site uses one.\n maxLength: 80\n default: \"\"\n what:\n type: string\n input: true\n description: >-\n One paragraph, 60 to 120 words, in the third person: what the business is, what it\n does, whom it serves, where. Taken from the site's own about, home and footer copy.\n This paragraph grounds every extraction, so it must name the business's actual lines\n of work, not adjectives. Never a slogan, never an industry generality.\n maxLength: 900\n default: \"\"\n units:\n type: array\n input: true\n description: >-\n The organisation map: every unit the organisation names in its own publications, the\n ones that face customers (divisions, lines of business, regions) and the ones that run\n the organisation (operations, technology, people and HR, finance, risk, legal,\n marketing, and the rest). Sources: the about and careers pages, the annual report's\n organisation or leadership section, a published org chart. One entry per unit with its\n name as the organisation writes it and one sentence on what it does or serves, nested\n in `units` where the organisation nests them. Empty when the sources name none; never\n invented.\n maxItems: 40\n default: []\n vocabulary:\n type: string\n input: true\n description: >-\n The words the business uses, as one paragraph separated by semicolons: its product and\n service names as it spells them, its programme and membership names, the terms it uses\n for its customers, and anything it capitalises. Every name is copied from the site,\n never paraphrased. This is the domain prompt every extraction reads, so completeness\n beats elegance.\n maxLength: 2000\n default: \"\"\n",
11
- "brand/manifest.yaml": "# The Brand (docs/edgy/elements/brand.md): our name and what it stands for. The written half;\n# styles/ is the visual half. Published, it is one row on the org's map, found by meaning.\ntitle: Brand\ndescription: >-\n The name and what it stands for: the promise it makes, whom it speaks to, what sets it\n apart, the brands inside it, and how it sounds.\nwhenToUse: >-\n Answer what the brand stands for, what to expect from it, whom it is for and what sets it\n apart; name the brands inside it; and give any writing its voice, the rules it follows and\n sentences in its own words. Not for what the organisation is or does, that is the\n Organisation, and not for why it exists, that is the Purpose.\ncategory: Identity\nversion: 1.0.0\n",
12
- "brand/brand.yaml": "unoverse: \"1.0\"\n# THE BRAND, declared the way a component declares its props: each description is the brief\n# the writer follows; the defaults are this org's own words, as they stand.\ntype: identity\nname: brand\ncategory: Identity\nprops:\n name:\n type: string\n input: true\n description: >-\n The brand name as the enterprise presents it, which may differ from its trading name\n (a bank's card brand, a group's consumer brand). The site's logo text or title, not\n the legal entity.\n maxLength: 80\n default: \"\"\n standsFor:\n type: string\n input: true\n description: >-\n What the name stands for, in one sentence, in the enterprise's own words where it says\n so (a tagline, a strapline, the meaning of the name, a 'who we are' line). Empty when\n it does not say.\n maxLength: 300\n default: \"\"\n promise:\n type: string\n input: true\n description: >-\n The expectation the brand sets: what people can expect from it, in one or two\n sentences, drawn from the promises the site repeats on its home, about and brand\n pages. Written to the customer.\n maxLength: 400\n default: \"\"\n represents:\n type: string\n input: true\n description: >-\n How the brand carries the purpose (read purpose.yaml first): in one paragraph, how the\n name, the promise and the way it presents itself express why the enterprise exists. In\n the enterprise's own words where it connects the two; empty when it does not.\n maxLength: 500\n default: \"\"\n audience:\n type: string\n input: true\n description: >-\n Whom the brand speaks to and how it wants to be seen by them, in one or two sentences,\n from the way the site addresses its customers and describes its position. Never\n invented segments.\n maxLength: 400\n default: \"\"\n differentiators:\n type: array\n input: true\n description: >-\n What the enterprise claims sets its brand apart, three to six items, each in its own\n words (a first, a leadership claim, a partnership, a heritage). Only claims it makes\n itself.\n maxItems: 6\n default: []\n brands:\n type: array\n input: true\n description: >-\n The brand tree: the sub-brands and product brands the enterprise presents under this\n brand (a card family, an app, a loyalty programme, a subsidiary), one entry per brand\n with its name as written and one sentence on what it is for, nested in `brands` where\n the enterprise nests them. Empty when it presents none; never invented.\n maxItems: 20\n default: []\n rules:\n type: array\n input: true\n description: >-\n Three to six rules the site's copy visibly follows, each as 'Do this' or 'Never that':\n the person it addresses (you, we), its register (plain, formal, warm), sentence\n length, what it capitalises, what it never says.\n maxItems: 6\n default: []\n examples:\n type: array\n input: true\n description: >-\n Three to five sentences copied verbatim from the site that show the voice. Quotes,\n never paraphrase.\n maxItems: 5\n default: []\n",
13
- "purpose/manifest.yaml": "# The Purpose (docs/edgy/elements/purpose.md): why the enterprise exists and the goals it pursues.\n# Published, it is one row on the org's map, found by meaning.\ntitle: Purpose\ndescription: >-\n Why the organisation exists: what its people believe in, what it aims to achieve, and the\n goals it is working toward.\nwhenToUse: >-\n Answer why the organisation exists, what its people believe in, what it aims to achieve\n and the goals it is working toward. Read before the Brand, which represents it. Not for\n its history or its scale, that is the Story, and not for its products.\ncategory: Identity\nversion: 1.0.0\n",
14
- "purpose/purpose.yaml": "unoverse: \"1.0\"\n# THE PURPOSE, declared the way a component declares its props: each description is the brief\n# the writer follows; the defaults are this org's own words, as they stand.\ntype: identity\nname: purpose\ncategory: Identity\nprops:\n statement:\n type: string\n input: true\n description: >-\n Why the enterprise exists, in its own words: the purpose or mission statement it\n publishes, quoted where one exists. When it publishes none, one sentence composed only\n from what its about page says it is for. Never a marketing slogan.\n maxLength: 400\n default: \"\"\n values:\n type: array\n input: true\n description: >-\n What the people of the enterprise believe in and consider valuable: the values it\n publishes, each with its name as the enterprise writes it and the one sentence it\n gives for it. From the values, culture or about pages. Empty when none are published;\n never invented.\n maxItems: 8\n default: []\n ambition:\n type: string\n input: true\n description: >-\n The far end of the purpose: what the enterprise says it aims to achieve for its\n customers, its country or society, in one paragraph, quoted where a vision or ambition\n statement exists, with the horizon it names. Not the goals below; the outcome they\n serve.\n maxLength: 700\n default: \"\"\n goals:\n type: array\n input: true\n description: >-\n The goal tree: the strategic goals, pillars or commitments the enterprise names (a\n strategy page, a strategy section of the annual report, 'our commitments'). One entry\n per goal with its name as the enterprise writes it and one sentence on why, nested in\n `goals` where it nests them. Empty when none are named; never invented.\n maxItems: 12\n default: []\n",
15
- "story/manifest.yaml": "# The Story (docs/edgy/elements/story.md): the way the enterprise makes sense of itself.\n# History, present, vision. Published, it is one row on the org's map, found by meaning.\ntitle: Story\ndescription: >-\n Where the organisation came from, what it is now and where it is going, and what that\n story says it is for.\nwhenToUse: >-\n Answer when and how the organisation began, its milestones, what it is today (its scale,\n its lines of business), where it says it is going, and whom its story is about. Read with\n the Purpose, which it puts in context. Not for why it exists, that is the Purpose.\ncategory: Identity\nversion: 1.0.0\n",
16
- "story/story.yaml": "unoverse: \"1.0\"\n# THE STORY, declared the way a component declares its props: each description is the brief\n# the writer follows; the defaults are this org's own words, as they stand.\ntype: identity\nname: story\ncategory: Identity\nprops:\n history:\n type: string\n input: true\n description: >-\n Where the enterprise came from, one paragraph of 60 to 120 words: founding year and\n place, the names it has carried, the mergers and milestones its about or history page\n states, in order. Only dated facts it gives; empty when it gives none.\n maxLength: 900\n default: \"\"\n milestones:\n type: array\n input: true\n description: >-\n The story's beats, in order: one entry per dated event the enterprise itself records\n (a founding, a merger, a name, a first, a listing), with the year as its name and one\n sentence on what happened and why it mattered. From its history page, its timeline or\n its annual report. Empty when it records none; never invented.\n maxItems: 20\n default: []\n present:\n type: string\n input: true\n description: >-\n What the enterprise is now, one paragraph of 60 to 120 words: its scale as it states\n it (customers, branches, countries, staff, assets), its main lines of business, its\n position in its market in its own words, with the date those figures carry.\n maxLength: 900\n default: \"\"\n vision:\n type: string\n input: true\n description: >-\n Where the enterprise is going, one paragraph: the vision, strategy or ambition it\n publishes, quoted where a vision statement exists, with the horizon it names (a year,\n a plan). Empty when it says nothing about the future.\n maxLength: 900\n default: \"\"\n people:\n type: string\n input: true\n description: >-\n Whom the story is about and for: the people the enterprise names as the protagonists\n of its story and the ones it tells it to (customers, employees, partners, a country, a\n community), in its own words. Empty when it names none.\n maxLength: 400\n default: \"\"\n meaning:\n type: string\n input: true\n description: >-\n What the story says the enterprise is for: one paragraph on how the history, the\n present and the vision explain why it does what it does, connecting them to the\n purpose (read purpose.yaml first). In the enterprise's own words where it makes the\n connection; empty when it does not.\n maxLength: 500\n default: \"\"\n"
17
- };