@owlmeans/viable-common 0.0.45 → 0.0.46

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 (45) hide show
  1. package/README.md +4 -3
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/agent-presentation/SKILL.md +1 -1
  4. package/agent-meta/skills/viable-common/SKILL.md +20 -3
  5. package/build/connect/ops.d.ts +189 -0
  6. package/build/connect/ops.d.ts.map +1 -0
  7. package/build/connect/ops.js +2 -0
  8. package/build/connect/ops.js.map +1 -0
  9. package/build/connect/types.d.ts +453 -0
  10. package/build/connect/types.d.ts.map +1 -0
  11. package/build/connect/types.js +2 -0
  12. package/build/connect/types.js.map +1 -0
  13. package/build/index.d.ts +1 -0
  14. package/build/index.d.ts.map +1 -1
  15. package/build/index.js +1 -0
  16. package/build/index.js.map +1 -1
  17. package/build/intent/flow.d.ts +17 -0
  18. package/build/intent/flow.d.ts.map +1 -0
  19. package/build/intent/flow.js +65 -0
  20. package/build/intent/flow.js.map +1 -0
  21. package/build/legal/consts.d.ts +36 -0
  22. package/build/legal/consts.d.ts.map +1 -0
  23. package/build/legal/consts.js +16 -0
  24. package/build/legal/consts.js.map +1 -0
  25. package/build/legal/index.d.ts +3 -0
  26. package/build/legal/index.d.ts.map +1 -0
  27. package/build/legal/index.js +2 -0
  28. package/build/legal/index.js.map +1 -0
  29. package/build/legal/types.d.ts +10 -0
  30. package/build/legal/types.d.ts.map +1 -0
  31. package/build/legal/types.js +2 -0
  32. package/build/legal/types.js.map +1 -0
  33. package/build/planning/flows.d.ts +34 -0
  34. package/build/planning/flows.d.ts.map +1 -0
  35. package/build/planning/flows.js +174 -0
  36. package/build/planning/flows.js.map +1 -0
  37. package/build/skills/roles.d.ts +43 -0
  38. package/build/skills/roles.d.ts.map +1 -0
  39. package/build/skills/roles.js +44 -0
  40. package/build/skills/roles.js.map +1 -0
  41. package/package.json +9 -2
  42. package/src/index.ts +1 -0
  43. package/src/legal/consts.ts +17 -0
  44. package/src/legal/index.ts +2 -0
  45. package/src/legal/types.ts +11 -0
@@ -0,0 +1,2 @@
1
+ export * from './consts.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/legal/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,10 @@
1
+ /** ISO YYYY-MM-DD dates, formatted for the reader's locale by the consumer. */
2
+ export interface LegalDocumentDates {
3
+ /** The day this version of the document takes effect. */
4
+ effective: string;
5
+ /** The day this version of the document was last edited. */
6
+ updated: string;
7
+ }
8
+ /** The complete document set; the date table must cover every key. */
9
+ export type LegalDocumentKey = 'terms' | 'privacy' | 'cookies' | 'services-agreement' | 'platform-license' | 'billing' | 'product';
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/legal/types.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,sEAAsE;AAEtE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/legal/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import type { AnyTypeSchema, ProjectTypeSchema, RelationshipType, SpecificationSlot, StatusFlowSchema, WorkcardTypeSchema } from '@owlmeans/planning';
2
+ /**
3
+ * The story flow.
4
+ *
5
+ * `failed` maps to PLANNED: a failed story is work still to do, so "done" is the closed count and
6
+ * a retry is simply `start` again. `reset` from anywhere is the manual recovery — the one move a
7
+ * completed story still accepts.
8
+ */
9
+ export declare const VIABLE_STORY_FLOW_SCHEMA: StatusFlowSchema;
10
+ /**
11
+ * The project flow.
12
+ *
13
+ * A create lands at `draft`; confirming the brief is `confirm`; the end of an initialization is
14
+ * `activate`. A reinitialization and a failed initialization are SLOT facts, not transitions, and
15
+ * destroying a project is a `delete` plus the platform's cascade — never `archive`.
16
+ */
17
+ export declare const VIABLE_PROJECT_FLOW_SCHEMA: StatusFlowSchema;
18
+ /** A document is written or revised; it has no lifecycle to move through. */
19
+ export declare const VIABLE_SPEC_FLOW_SCHEMA: StatusFlowSchema;
20
+ /** The brief a person confirms, and the plan the scaffold draws from it. */
21
+ export declare const VIABLE_PROJECT_SLOTS: SpecificationSlot[];
22
+ /** A story's design — the payload the implementation stage consumes. */
23
+ export declare const VIABLE_STORY_SLOTS: SpecificationSlot[];
24
+ export declare const VIABLE_STORY_RELATIONSHIPS: RelationshipType[];
25
+ export declare const VIABLE_PROJECT_TYPE_SCHEMA: ProjectTypeSchema;
26
+ export declare const VIABLE_STORY_TYPE_SCHEMA: WorkcardTypeSchema;
27
+ export declare const VIABLE_SPEC_TYPE_SCHEMA: WorkcardTypeSchema;
28
+ /** Registered so their prefixes and flow are decided once; not creatable under a project yet. */
29
+ export declare const VIABLE_RESERVED_TYPE_SCHEMAS: WorkcardTypeSchema[];
30
+ /** Every Viable type — what a planning plugin registers. */
31
+ export declare const VIABLE_TYPE_SCHEMAS: AnyTypeSchema[];
32
+ /** Every Viable flow — registered beside the types. */
33
+ export declare const VIABLE_FLOW_SCHEMAS: StatusFlowSchema[];
34
+ //# sourceMappingURL=flows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flows.d.ts","sourceRoot":"","sources":["../../src/planning/flows.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EACvF,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAgB3B;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,gBA6BtC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBA6BxC,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,EAAE,gBAOrC,CAAA;AAMD,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAOnD,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,EAOjD,CAAA;AAKD,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAIxD,CAAA;AAED,eAAO,MAAM,0BAA0B,EAAE,iBAUxC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,kBAUtC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAOrC,CAAA;AAaD,iGAAiG;AACjG,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,EAI5D,CAAA;AAED,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,EAAE,aAAa,EAK9C,CAAA;AAED,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAIjD,CAAA"}
@@ -0,0 +1,174 @@
1
+ import { IntrinsicPolicy, IntrinsicStatus, SpecificationFormat, WorkcardKind } from '@owlmeans/planning';
2
+ import { STORY_DESIGN_VERSION } from '../design/consts.js';
3
+ import { StoryDesignSchema } from '../design/schemas.js';
4
+ import { ScaffoldPlanSchema } from '../scaffold/schemas.js';
5
+ import { VIABLE_BUG_CODE, VIABLE_BUG_TYPE, VIABLE_DESIGN_REVISIONS_KEPT, VIABLE_IMPROVEMENT_CODE, VIABLE_IMPROVEMENT_TYPE, VIABLE_PROJECT_CODE, VIABLE_PROJECT_FLOW, VIABLE_PROJECT_TYPE, VIABLE_REQUIREMENT_CODE, VIABLE_REQUIREMENT_TYPE, VIABLE_SPEC_FLOW, VIABLE_SPEC_TYPE, VIABLE_STORY_CODE, VIABLE_STORY_FLOW, VIABLE_STORY_TYPE, ViableProjectStatus, ViableProjectTransition, ViableRelationship, ViableSpecCategory, ViableSpecStatus, ViableStoryStatus, ViableStoryTransition, ViableTone, } from './consts.js';
6
+ import { ViableOpenFieldsSchema, ViableProjectFieldsSchema, ViableSpecFieldsSchema, ViableStoryFieldsSchema, } from './schemas.js';
7
+ /**
8
+ * The story flow.
9
+ *
10
+ * `failed` maps to PLANNED: a failed story is work still to do, so "done" is the closed count and
11
+ * a retry is simply `start` again. `reset` from anywhere is the manual recovery — the one move a
12
+ * completed story still accepts.
13
+ */
14
+ export const VIABLE_STORY_FLOW_SCHEMA = {
15
+ id: VIABLE_STORY_FLOW,
16
+ version: 1,
17
+ statuses: [
18
+ { key: ViableStoryStatus.Planned, intrinsic: IntrinsicStatus.Planned, initial: true, tone: ViableTone.Blue },
19
+ { key: ViableStoryStatus.InProgress, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Yellow },
20
+ { key: ViableStoryStatus.Completed, intrinsic: IntrinsicStatus.Closed, tone: ViableTone.Green },
21
+ { key: ViableStoryStatus.Failed, intrinsic: IntrinsicStatus.Planned, tone: ViableTone.Red },
22
+ ],
23
+ transitions: [
24
+ {
25
+ name: ViableStoryTransition.Start,
26
+ from: [ViableStoryStatus.Planned, ViableStoryStatus.Failed],
27
+ to: ViableStoryStatus.InProgress,
28
+ explicit: true,
29
+ },
30
+ {
31
+ name: ViableStoryTransition.Complete,
32
+ from: [ViableStoryStatus.InProgress],
33
+ to: ViableStoryStatus.Completed,
34
+ explicit: true,
35
+ },
36
+ {
37
+ name: ViableStoryTransition.Fail,
38
+ from: [ViableStoryStatus.InProgress],
39
+ to: ViableStoryStatus.Failed,
40
+ },
41
+ { name: ViableStoryTransition.Reset, from: '*', to: ViableStoryStatus.Planned, explicit: true },
42
+ ],
43
+ };
44
+ /**
45
+ * The project flow.
46
+ *
47
+ * A create lands at `draft`; confirming the brief is `confirm`; the end of an initialization is
48
+ * `activate`. A reinitialization and a failed initialization are SLOT facts, not transitions, and
49
+ * destroying a project is a `delete` plus the platform's cascade — never `archive`.
50
+ */
51
+ export const VIABLE_PROJECT_FLOW_SCHEMA = {
52
+ id: VIABLE_PROJECT_FLOW,
53
+ version: 1,
54
+ statuses: [
55
+ { key: ViableProjectStatus.Draft, intrinsic: IntrinsicStatus.Planned, initial: true, tone: ViableTone.Blue },
56
+ { key: ViableProjectStatus.Confirmed, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Yellow },
57
+ { key: ViableProjectStatus.Active, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Green },
58
+ { key: ViableProjectStatus.Archived, intrinsic: IntrinsicStatus.Closed, tone: ViableTone.Neutral },
59
+ ],
60
+ transitions: [
61
+ {
62
+ name: ViableProjectTransition.Confirm,
63
+ from: [ViableProjectStatus.Draft],
64
+ to: ViableProjectStatus.Confirmed,
65
+ explicit: true,
66
+ },
67
+ {
68
+ name: ViableProjectTransition.Activate,
69
+ from: [ViableProjectStatus.Confirmed],
70
+ to: ViableProjectStatus.Active,
71
+ },
72
+ { name: ViableProjectTransition.Archive, from: '*', to: ViableProjectStatus.Archived, explicit: true },
73
+ {
74
+ name: ViableProjectTransition.Reopen,
75
+ from: [ViableProjectStatus.Archived],
76
+ to: ViableProjectStatus.Active,
77
+ explicit: true,
78
+ },
79
+ ],
80
+ };
81
+ /** A document is written or revised; it has no lifecycle to move through. */
82
+ export const VIABLE_SPEC_FLOW_SCHEMA = {
83
+ id: VIABLE_SPEC_FLOW,
84
+ version: 1,
85
+ statuses: [
86
+ { key: ViableSpecStatus.Current, intrinsic: IntrinsicStatus.Closed, initial: true, tone: ViableTone.Neutral },
87
+ ],
88
+ transitions: [],
89
+ };
90
+ const slot = (category, format, extra = {}) => ({ category, format, type: VIABLE_SPEC_TYPE, ...extra });
91
+ /** The brief a person confirms, and the plan the scaffold draws from it. */
92
+ export const VIABLE_PROJECT_SLOTS = [
93
+ slot(ViableSpecCategory.Specification, SpecificationFormat.Markdown, { required: true }),
94
+ slot(ViableSpecCategory.Vision, SpecificationFormat.Markdown),
95
+ slot(ViableSpecCategory.DesignSystem, SpecificationFormat.Markdown),
96
+ slot(ViableSpecCategory.Scaffold, SpecificationFormat.Json, {
97
+ revisioned: true, keepRevisions: VIABLE_DESIGN_REVISIONS_KEPT, schema: ScaffoldPlanSchema,
98
+ }),
99
+ ];
100
+ /** A story's design — the payload the implementation stage consumes. */
101
+ export const VIABLE_STORY_SLOTS = [
102
+ slot(ViableSpecCategory.Design, SpecificationFormat.Json, {
103
+ revisioned: true,
104
+ keepRevisions: VIABLE_DESIGN_REVISIONS_KEPT,
105
+ schema: StoryDesignSchema,
106
+ version: STORY_DESIGN_VERSION,
107
+ }),
108
+ ];
109
+ const storyLink = (name) => ({ name, from: [VIABLE_STORY_TYPE], to: [VIABLE_STORY_TYPE], single: true });
110
+ export const VIABLE_STORY_RELATIONSHIPS = [
111
+ storyLink(ViableRelationship.Follows),
112
+ storyLink(ViableRelationship.SharesWidget),
113
+ storyLink(ViableRelationship.SharesScreen),
114
+ ];
115
+ export const VIABLE_PROJECT_TYPE_SCHEMA = {
116
+ type: VIABLE_PROJECT_TYPE,
117
+ kind: WorkcardKind.Project,
118
+ version: 1,
119
+ fields: ViableProjectFieldsSchema,
120
+ flows: [VIABLE_PROJECT_FLOW],
121
+ intrinsic: IntrinsicPolicy.Primary,
122
+ specifications: VIABLE_PROJECT_SLOTS,
123
+ code: VIABLE_PROJECT_CODE,
124
+ cardTypes: [VIABLE_STORY_TYPE],
125
+ };
126
+ export const VIABLE_STORY_TYPE_SCHEMA = {
127
+ type: VIABLE_STORY_TYPE,
128
+ kind: WorkcardKind.Card,
129
+ version: 1,
130
+ fields: ViableStoryFieldsSchema,
131
+ flows: [VIABLE_STORY_FLOW],
132
+ intrinsic: IntrinsicPolicy.Primary,
133
+ specifications: VIABLE_STORY_SLOTS,
134
+ relationships: VIABLE_STORY_RELATIONSHIPS,
135
+ code: VIABLE_STORY_CODE,
136
+ };
137
+ export const VIABLE_SPEC_TYPE_SCHEMA = {
138
+ type: VIABLE_SPEC_TYPE,
139
+ kind: WorkcardKind.Specification,
140
+ version: 1,
141
+ fields: ViableSpecFieldsSchema,
142
+ flows: [VIABLE_SPEC_FLOW],
143
+ specifications: [],
144
+ };
145
+ const reserved = (type, code) => ({
146
+ type,
147
+ kind: WorkcardKind.Card,
148
+ version: 1,
149
+ fields: ViableOpenFieldsSchema,
150
+ flows: [VIABLE_STORY_FLOW],
151
+ intrinsic: IntrinsicPolicy.Primary,
152
+ specifications: [],
153
+ code,
154
+ });
155
+ /** Registered so their prefixes and flow are decided once; not creatable under a project yet. */
156
+ export const VIABLE_RESERVED_TYPE_SCHEMAS = [
157
+ reserved(VIABLE_BUG_TYPE, VIABLE_BUG_CODE),
158
+ reserved(VIABLE_IMPROVEMENT_TYPE, VIABLE_IMPROVEMENT_CODE),
159
+ reserved(VIABLE_REQUIREMENT_TYPE, VIABLE_REQUIREMENT_CODE),
160
+ ];
161
+ /** Every Viable type — what a planning plugin registers. */
162
+ export const VIABLE_TYPE_SCHEMAS = [
163
+ VIABLE_PROJECT_TYPE_SCHEMA,
164
+ VIABLE_STORY_TYPE_SCHEMA,
165
+ VIABLE_SPEC_TYPE_SCHEMA,
166
+ ...VIABLE_RESERVED_TYPE_SCHEMAS,
167
+ ];
168
+ /** Every Viable flow — registered beside the types. */
169
+ export const VIABLE_FLOW_SCHEMAS = [
170
+ VIABLE_PROJECT_FLOW_SCHEMA,
171
+ VIABLE_STORY_FLOW_SCHEMA,
172
+ VIABLE_SPEC_FLOW_SCHEMA,
173
+ ];
174
+ //# sourceMappingURL=flows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../src/planning/flows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Who the model is being asked to be.
3
+ *
4
+ * A persona is per HELPER, not per model role: `ModelRole` selects which model answers,
5
+ * this selects what it is told it does. Two helpers can share a model and need different
6
+ * personas, and the same persona can run on a cheap or an expensive model depending on
7
+ * the effort tier — keeping the two axes separate is what makes that possible.
8
+ */
9
+ export declare enum ViablePersona {
10
+ BusinessAnalyst = "business-analyst",
11
+ ProductNaming = "product-naming",
12
+ /** Decides what KIND of product a prompt describes — which blueprint case builds it. */
13
+ ProductArchitect = "product-architect",
14
+ UxDesigner = "ux-designer",
15
+ VisualDesigner = "visual-designer",
16
+ LayoutArchitect = "layout-architect",
17
+ ComponentArchitect = "component-architect",
18
+ StateArchitect = "state-architect",
19
+ NavigationArchitect = "navigation-architect",
20
+ DomainTypesArchitect = "domain-types-architect",
21
+ AccessArchitect = "access-architect",
22
+ ApiArchitect = "api-architect",
23
+ DatalayerArchitect = "datalayer-architect",
24
+ BackendDomainArchitect = "backend-domain-architect",
25
+ CommonCoder = "common-coder",
26
+ UiStateCoder = "ui-state-coder",
27
+ UiViewCoder = "ui-view-coder",
28
+ UiNavCoder = "ui-nav-coder",
29
+ DatalayerCoder = "datalayer-coder",
30
+ ApiCoder = "api-coder",
31
+ BackendModelCoder = "backend-model-coder",
32
+ /** Decides whether a story needs a queue, a worker or an agent — and usually decides it does not. */
33
+ RuntimeArchitect = "runtime-architect",
34
+ /** Writes queue declarations, job processors and the application's own agents. */
35
+ WorkerCoder = "worker-coder",
36
+ FreeFlightCoder = "free-flight-coder",
37
+ Fixer = "fixer",
38
+ Orchestrator = "orchestrator",
39
+ SourceExtractor = "source-extractor",
40
+ DeclarationLookup = "declaration-lookup",
41
+ FixAgent = "fix-agent"
42
+ }
43
+ //# sourceMappingURL=roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/skills/roles.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,oBAAY,aAAa;IACvB,eAAe,qBAAqB;IACpC,aAAa,mBAAmB;IAChC,wFAAwF;IACxF,gBAAgB,sBAAsB;IACtC,UAAU,gBAAgB;IAC1B,cAAc,oBAAoB;IAElC,eAAe,qBAAqB;IACpC,kBAAkB,wBAAwB;IAC1C,cAAc,oBAAoB;IAClC,mBAAmB,yBAAyB;IAC5C,oBAAoB,2BAA2B;IAC/C,eAAe,qBAAqB;IACpC,YAAY,kBAAkB;IAC9B,kBAAkB,wBAAwB;IAC1C,sBAAsB,6BAA6B;IAEnD,WAAW,iBAAiB;IAC5B,YAAY,mBAAmB;IAC/B,WAAW,kBAAkB;IAC7B,UAAU,iBAAiB;IAC3B,cAAc,oBAAoB;IAClC,QAAQ,cAAc;IACtB,iBAAiB,wBAAwB;IACzC,qGAAqG;IACrG,gBAAgB,sBAAsB;IACtC,kFAAkF;IAClF,WAAW,iBAAiB;IAC5B,eAAe,sBAAsB;IAErC,KAAK,UAAU;IACf,YAAY,iBAAiB;IAC7B,eAAe,qBAAqB;IACpC,iBAAiB,uBAAuB;IACxC,QAAQ,cAAc;CACvB"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Who the model is being asked to be.
3
+ *
4
+ * A persona is per HELPER, not per model role: `ModelRole` selects which model answers,
5
+ * this selects what it is told it does. Two helpers can share a model and need different
6
+ * personas, and the same persona can run on a cheap or an expensive model depending on
7
+ * the effort tier — keeping the two axes separate is what makes that possible.
8
+ */
9
+ export var ViablePersona;
10
+ (function (ViablePersona) {
11
+ ViablePersona["BusinessAnalyst"] = "business-analyst";
12
+ ViablePersona["ProductNaming"] = "product-naming";
13
+ /** Decides what KIND of product a prompt describes — which blueprint case builds it. */
14
+ ViablePersona["ProductArchitect"] = "product-architect";
15
+ ViablePersona["UxDesigner"] = "ux-designer";
16
+ ViablePersona["VisualDesigner"] = "visual-designer";
17
+ ViablePersona["LayoutArchitect"] = "layout-architect";
18
+ ViablePersona["ComponentArchitect"] = "component-architect";
19
+ ViablePersona["StateArchitect"] = "state-architect";
20
+ ViablePersona["NavigationArchitect"] = "navigation-architect";
21
+ ViablePersona["DomainTypesArchitect"] = "domain-types-architect";
22
+ ViablePersona["AccessArchitect"] = "access-architect";
23
+ ViablePersona["ApiArchitect"] = "api-architect";
24
+ ViablePersona["DatalayerArchitect"] = "datalayer-architect";
25
+ ViablePersona["BackendDomainArchitect"] = "backend-domain-architect";
26
+ ViablePersona["CommonCoder"] = "common-coder";
27
+ ViablePersona["UiStateCoder"] = "ui-state-coder";
28
+ ViablePersona["UiViewCoder"] = "ui-view-coder";
29
+ ViablePersona["UiNavCoder"] = "ui-nav-coder";
30
+ ViablePersona["DatalayerCoder"] = "datalayer-coder";
31
+ ViablePersona["ApiCoder"] = "api-coder";
32
+ ViablePersona["BackendModelCoder"] = "backend-model-coder";
33
+ /** Decides whether a story needs a queue, a worker or an agent — and usually decides it does not. */
34
+ ViablePersona["RuntimeArchitect"] = "runtime-architect";
35
+ /** Writes queue declarations, job processors and the application's own agents. */
36
+ ViablePersona["WorkerCoder"] = "worker-coder";
37
+ ViablePersona["FreeFlightCoder"] = "free-flight-coder";
38
+ ViablePersona["Fixer"] = "fixer";
39
+ ViablePersona["Orchestrator"] = "orchestrator";
40
+ ViablePersona["SourceExtractor"] = "source-extractor";
41
+ ViablePersona["DeclarationLookup"] = "declaration-lookup";
42
+ ViablePersona["FixAgent"] = "fix-agent";
43
+ })(ViablePersona || (ViablePersona = {}));
44
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/skills/roles.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,MAAM,CAAN,IAAY,aAoCX;AApCD,WAAY,aAAa;IACvB,qDAAoC,CAAA;IACpC,iDAAgC,CAAA;IAChC,wFAAwF;IACxF,uDAAsC,CAAA;IACtC,2CAA0B,CAAA;IAC1B,mDAAkC,CAAA;IAElC,qDAAoC,CAAA;IACpC,2DAA0C,CAAA;IAC1C,mDAAkC,CAAA;IAClC,6DAA4C,CAAA;IAC5C,gEAA+C,CAAA;IAC/C,qDAAoC,CAAA;IACpC,+CAA8B,CAAA;IAC9B,2DAA0C,CAAA;IAC1C,oEAAmD,CAAA;IAEnD,6CAA4B,CAAA;IAC5B,gDAA+B,CAAA;IAC/B,8CAA6B,CAAA;IAC7B,4CAA2B,CAAA;IAC3B,mDAAkC,CAAA;IAClC,uCAAsB,CAAA;IACtB,0DAAyC,CAAA;IACzC,qGAAqG;IACrG,uDAAsC,CAAA;IACtC,kFAAkF;IAClF,6CAA4B,CAAA;IAC5B,sDAAqC,CAAA;IAErC,gCAAe,CAAA;IACf,8CAA6B,CAAA;IAC7B,qDAAoC,CAAA;IACpC,yDAAwC,CAAA;IACxC,uCAAsB,CAAA;AACxB,CAAC,EApCW,aAAa,KAAb,aAAa,QAoCxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/viable-common",
3
- "version": "0.0.45",
3
+ "version": "0.0.46",
4
4
  "license": "MIT",
5
5
  "description": "Runtime-free contracts of the OwlMeans Viable platform — the analysis, design and metadata shapes of a generated project, its target-shape manifest, the slot command vocabulary, the connector protocol and the conversion vocabulary, and the intent-first hand-off from the public site to the platform.",
6
6
  "type": "module",
@@ -49,6 +49,13 @@
49
49
  "module": "./build/integrity/index.js",
50
50
  "types": "./build/integrity/index.d.ts"
51
51
  },
52
+ "./legal": {
53
+ "import": "./build/legal/index.js",
54
+ "require": "./build/legal/index.js",
55
+ "default": "./build/legal/index.js",
56
+ "module": "./build/legal/index.js",
57
+ "types": "./build/legal/index.d.ts"
58
+ },
52
59
  "./intent": {
53
60
  "import": "./build/intent/index.js",
54
61
  "require": "./build/intent/index.js",
@@ -73,7 +80,7 @@
73
80
  "@owlmeans/error": "^0.1.18-rc.38",
74
81
  "@owlmeans/flow": "^0.1.18-rc.45",
75
82
  "@owlmeans/llm-common": "^0.1.18-rc.39",
76
- "@owlmeans/planning": "^0.1.18-rc.19",
83
+ "@owlmeans/planning": "^0.1.18-rc.20",
77
84
  "@owlmeans/resource": "^0.1.18-rc.40",
78
85
  "@owlmeans/route": "^0.1.18-rc.35"
79
86
  },
package/src/index.ts CHANGED
@@ -21,3 +21,4 @@ export * from './scaffold/index.js'
21
21
  export * from './design/index.js'
22
22
  export * from './planning/index.js'
23
23
  export * from './branding.js'
24
+ export * from './legal/index.js'
@@ -0,0 +1,17 @@
1
+ import type { LegalDocumentDates, LegalDocumentKey } from './types.js'
2
+
3
+ /**
4
+ * The shared dates for the platform's legal acceptance and the public site's legal pages.
5
+ * Changing terms/privacy/billing/product updated dates requires renewed terms acceptance;
6
+ * privacy.updated also revises marketing consent. The other documents are display-only.
7
+ */
8
+ export const OWLMEANS_LEGAL_DATES = {
9
+ terms: { effective: '2026-05-30', updated: '2026-05-30' },
10
+ privacy: { effective: '2026-05-30', updated: '2026-05-30' },
11
+ cookies: { effective: '2026-09-24', updated: '2026-09-25' },
12
+ 'services-agreement': { effective: '2026-10-04', updated: '2026-10-04' },
13
+ 'platform-license': { effective: '2026-10-04', updated: '2026-10-04' },
14
+ // These documents date the platform's sign-in terms line without public-site pages yet.
15
+ billing: { effective: '2026-05-30', updated: '2026-05-30' },
16
+ product: { effective: '2026-05-30', updated: '2026-05-30' },
17
+ } as const satisfies Record<LegalDocumentKey, LegalDocumentDates>
@@ -0,0 +1,2 @@
1
+ export * from './consts.js'
2
+ export type * from './types.js'
@@ -0,0 +1,11 @@
1
+ /** ISO YYYY-MM-DD dates, formatted for the reader's locale by the consumer. */
2
+ export interface LegalDocumentDates {
3
+ /** The day this version of the document takes effect. */
4
+ effective: string
5
+ /** The day this version of the document was last edited. */
6
+ updated: string
7
+ }
8
+
9
+ /** The complete document set; the date table must cover every key. */
10
+ // Kept as a type: a union of the document keys.
11
+ export type LegalDocumentKey = 'terms' | 'privacy' | 'cookies' | 'services-agreement' | 'platform-license' | 'billing' | 'product'