@owlmeans/viable-common 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/agent-presentation/SKILL.md +2 -0
- package/agent-meta/skills/viable-common/SKILL.md +195 -10
- package/build/ba/consts.d.ts +2 -3
- package/build/ba/consts.d.ts.map +1 -1
- package/build/ba/consts.js +2 -3
- package/build/ba/consts.js.map +1 -1
- package/build/ba/helpers.d.ts +2 -1
- package/build/ba/helpers.d.ts.map +1 -1
- package/build/ba/helpers.js +3 -2
- package/build/ba/helpers.js.map +1 -1
- package/build/ba/types.d.ts +17 -2
- package/build/ba/types.d.ts.map +1 -1
- package/build/blueprint/case.js +3 -3
- package/build/connect/consts.d.ts +5 -8
- package/build/connect/consts.d.ts.map +1 -1
- package/build/connect/consts.js +5 -8
- package/build/connect/consts.js.map +1 -1
- package/build/connect/entrypoints.d.ts +1 -43
- package/build/connect/entrypoints.d.ts.map +1 -1
- package/build/connect/entrypoints.js +1 -18
- package/build/connect/entrypoints.js.map +1 -1
- package/build/connect/index.d.ts +1 -0
- package/build/connect/index.d.ts.map +1 -1
- package/build/connect/index.js +1 -0
- package/build/connect/index.js.map +1 -1
- package/build/connect/jobs.d.ts +25 -0
- package/build/connect/jobs.d.ts.map +1 -0
- package/build/connect/jobs.js +29 -0
- package/build/connect/jobs.js.map +1 -0
- package/build/connect/references.d.ts +1 -40
- package/build/connect/references.d.ts.map +1 -1
- package/build/connect/references.js +0 -8
- package/build/connect/references.js.map +1 -1
- package/build/connect/schemas.d.ts +1 -7
- package/build/connect/schemas.d.ts.map +1 -1
- package/build/connect/schemas.js +1 -25
- package/build/connect/schemas.js.map +1 -1
- package/build/connect/types.d.ts +30 -45
- package/build/connect/types.d.ts.map +1 -1
- package/build/design/consts.d.ts +0 -2
- package/build/design/consts.d.ts.map +1 -1
- package/build/design/consts.js +0 -2
- package/build/design/consts.js.map +1 -1
- package/build/design/helpers.d.ts +6 -2
- package/build/design/helpers.d.ts.map +1 -1
- package/build/design/helpers.js +6 -2
- package/build/design/helpers.js.map +1 -1
- package/build/design/types.d.ts +12 -11
- package/build/design/types.d.ts.map +1 -1
- package/build/execution/types.d.ts +11 -0
- package/build/execution/types.d.ts.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/planning/consts.d.ts +141 -0
- package/build/planning/consts.d.ts.map +1 -0
- package/build/planning/consts.js +170 -0
- package/build/planning/consts.js.map +1 -0
- package/build/planning/errors.d.ts +64 -0
- package/build/planning/errors.d.ts.map +1 -0
- package/build/planning/errors.js +99 -0
- package/build/planning/errors.js.map +1 -0
- package/build/planning/flows.d.ts +34 -0
- package/build/planning/flows.d.ts.map +1 -0
- package/build/planning/flows.js +174 -0
- package/build/planning/flows.js.map +1 -0
- package/build/planning/helpers.d.ts +54 -0
- package/build/planning/helpers.d.ts.map +1 -0
- package/build/planning/helpers.js +101 -0
- package/build/planning/helpers.js.map +1 -0
- package/build/planning/index.d.ts +7 -0
- package/build/planning/index.d.ts.map +1 -0
- package/build/planning/index.js +6 -0
- package/build/planning/index.js.map +1 -0
- package/build/planning/schemas.d.ts +23 -0
- package/build/planning/schemas.d.ts.map +1 -0
- package/build/planning/schemas.js +65 -0
- package/build/planning/schemas.js.map +1 -0
- package/build/planning/types.d.ts +70 -0
- package/build/planning/types.d.ts.map +1 -0
- package/build/planning/types.js +2 -0
- package/build/planning/types.js.map +1 -0
- package/build/scaffold/schemas.d.ts.map +1 -1
- package/build/scaffold/schemas.js +7 -2
- package/build/scaffold/schemas.js.map +1 -1
- package/build/scaffold/types.d.ts +5 -1
- package/build/scaffold/types.d.ts.map +1 -1
- package/package.json +8 -6
- package/src/ba/consts.ts +2 -3
- package/src/ba/helpers.ts +3 -2
- package/src/ba/types.ts +17 -2
- package/src/blueprint/case.ts +3 -3
- package/src/connect/consts.ts +5 -8
- package/src/connect/entrypoints.ts +2 -41
- package/src/connect/index.ts +1 -0
- package/src/connect/jobs.ts +40 -0
- package/src/connect/references.ts +1 -22
- package/src/connect/schemas.ts +2 -29
- package/src/connect/types.ts +30 -51
- package/src/design/consts.ts +0 -3
- package/src/design/helpers.ts +6 -2
- package/src/design/types.ts +12 -11
- package/src/execution/types.ts +11 -0
- package/src/index.ts +1 -0
- package/src/planning/consts.ts +182 -0
- package/src/planning/errors.ts +117 -0
- package/src/planning/flows.ts +204 -0
- package/src/planning/helpers.ts +133 -0
- package/src/planning/index.ts +6 -0
- package/src/planning/schemas.ts +70 -0
- package/src/planning/types.ts +75 -0
- package/src/scaffold/schemas.ts +7 -2
- package/src/scaffold/types.ts +10 -1
- package/tests/branding.spec.ts +37 -0
- package/tests/connect-entrypoints.spec.ts +35 -3
- package/tests/design.spec.ts +3 -3
- package/tests/planning.spec.ts +356 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { WorkcardKind } from '@owlmeans/planning';
|
|
2
|
+
import { ProjectArea } from '../areas/consts.js';
|
|
3
|
+
import { userStoryOfDesign } from '../design/helpers.js';
|
|
4
|
+
import { VIABLE_PROJECT_TYPE, VIABLE_STORY_TYPE, VIABLE_USER_CHANNELS, ViableSpecCategory, } from './consts.js';
|
|
5
|
+
import { ProjectStoryMissconfigured } from './errors.js';
|
|
6
|
+
/** A `viable:project` card — kind AND type, since a foreign provider may share either alone. */
|
|
7
|
+
export const isViableProject = (card) => card != null && card.kind === WorkcardKind.Project && card.type === VIABLE_PROJECT_TYPE;
|
|
8
|
+
/** A `viable:user-story` card. */
|
|
9
|
+
export const isViableStory = (card) => card != null && card.kind === WorkcardKind.Card && card.type === VIABLE_STORY_TYPE;
|
|
10
|
+
/** Whether a write came from a person (`web`, `connect`) rather than the platform's own runs. */
|
|
11
|
+
export const isUserChannel = (channel) => channel != null && VIABLE_USER_CHANNELS.includes(channel);
|
|
12
|
+
export const projectFieldsOf = (card) => (card.fields ?? {});
|
|
13
|
+
/**
|
|
14
|
+
* A story card's fields, with the two required ones always answered.
|
|
15
|
+
*
|
|
16
|
+
* An absent area reads as `guest` — the area that guards nothing — and an absent primary flag as
|
|
17
|
+
* `false`, so a reader never branches on a card written by a store that dropped them.
|
|
18
|
+
*/
|
|
19
|
+
export const storyFieldsOf = (card) => {
|
|
20
|
+
const fields = (card.fields ?? {});
|
|
21
|
+
return { ...fields, area: fields.area ?? ProjectArea.Guest, primary: fields.primary === true };
|
|
22
|
+
};
|
|
23
|
+
/** The draft shape the analysis prompts and moderation take, from a card. */
|
|
24
|
+
export const storyDraftOf = (card) => ({ story: card.title, area: storyFieldsOf(card).area });
|
|
25
|
+
/**
|
|
26
|
+
* The aggregate the coders take, for a story CARD.
|
|
27
|
+
*
|
|
28
|
+
* The card wins on the narrative, the code, the area and the actor — a person may have changed any
|
|
29
|
+
* of them since the design was written. The design supplies what only it knows: the entities and
|
|
30
|
+
* the screens. Without a design the aggregate has no screens yet.
|
|
31
|
+
*/
|
|
32
|
+
export const userStoryOf = (card, design) => {
|
|
33
|
+
const fields = storyFieldsOf(card);
|
|
34
|
+
const base = design != null
|
|
35
|
+
? userStoryOfDesign(design)
|
|
36
|
+
: { story: card.title, area: fields.area, entity: null, entities: [], screens: [] };
|
|
37
|
+
const code = card.code ?? base.code;
|
|
38
|
+
return {
|
|
39
|
+
...base,
|
|
40
|
+
story: card.title,
|
|
41
|
+
...(code != null ? { code } : {}),
|
|
42
|
+
area: fields.area,
|
|
43
|
+
...(fields.actor != null ? { actor: fields.actor } : {}),
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* The current document of one category among a card's specifications.
|
|
48
|
+
*
|
|
49
|
+
* The highest revision wins, then the most recently updated; a category nobody wrote answers
|
|
50
|
+
* `null`.
|
|
51
|
+
*/
|
|
52
|
+
export const currentSpecOf = (specs, category) => specs
|
|
53
|
+
.filter(spec => spec.category === category)
|
|
54
|
+
.reduce((best, spec) => {
|
|
55
|
+
if (best == null)
|
|
56
|
+
return spec;
|
|
57
|
+
const byRevision = (spec.revision ?? 0) - (best.revision ?? 0);
|
|
58
|
+
if (byRevision !== 0)
|
|
59
|
+
return byRevision > 0 ? spec : best;
|
|
60
|
+
return (spec.updatedAt ?? spec.createdAt) > (best.updatedAt ?? best.createdAt) ? spec : best;
|
|
61
|
+
}, null);
|
|
62
|
+
/** The body of a category's current document, `''` when there is none. */
|
|
63
|
+
export const currentSpecBody = (specs, category) => currentSpecOf(specs, category)?.body ?? '';
|
|
64
|
+
/**
|
|
65
|
+
* The brief a generator reads, assembled from the project card and its specifications.
|
|
66
|
+
*
|
|
67
|
+
* `name` is the card's title and `alias` its code; a brief part nobody wrote is `''`, which is
|
|
68
|
+
* what every prompt already treats as "not stated".
|
|
69
|
+
*/
|
|
70
|
+
export const projectBriefOf = (project, specs) => {
|
|
71
|
+
const { language } = projectFieldsOf(project);
|
|
72
|
+
return {
|
|
73
|
+
name: project.title,
|
|
74
|
+
...(project.code != null ? { alias: project.code } : {}),
|
|
75
|
+
description: project.description ?? '',
|
|
76
|
+
specification: currentSpecBody(specs, ViableSpecCategory.Specification),
|
|
77
|
+
designSystem: currentSpecBody(specs, ViableSpecCategory.DesignSystem),
|
|
78
|
+
vision: currentSpecBody(specs, ViableSpecCategory.Vision),
|
|
79
|
+
...(language != null ? { language } : {}),
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* What the metadata store writes to `docs/stories/<code>.md`, from the card and a run's content.
|
|
84
|
+
*
|
|
85
|
+
* The CODE is the target's only story identifier — a card id never reaches a target file — so a
|
|
86
|
+
* story card without one is refused rather than filed under its id.
|
|
87
|
+
*/
|
|
88
|
+
export const storyWriteInputOf = (card, content) => {
|
|
89
|
+
if (card.code == null || card.code === '') {
|
|
90
|
+
throw new ProjectStoryMissconfigured('no-code');
|
|
91
|
+
}
|
|
92
|
+
const { status, ...rest } = content;
|
|
93
|
+
return {
|
|
94
|
+
...rest,
|
|
95
|
+
code: card.code,
|
|
96
|
+
narrative: card.title,
|
|
97
|
+
status: status ?? card.status,
|
|
98
|
+
primary: storyFieldsOf(card).primary,
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/planning/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/planning/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,mBAAmB,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/planning/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { JSONSchemaType } from 'ajv';
|
|
2
|
+
import type { ViableProjectFields, ViableStoryFields } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The `fields` schema of a `viable:project` card.
|
|
5
|
+
*
|
|
6
|
+
* A record-element schema: hand-written, cast, every optional key nullable with its type, every
|
|
7
|
+
* nullable enum listing `null`. Plain strings where the vocabulary grows in a library this record
|
|
8
|
+
* does not redeploy with (blueprint, case, game kind).
|
|
9
|
+
*/
|
|
10
|
+
export declare const ViableProjectFieldsSchema: JSONSchemaType<ViableProjectFields>;
|
|
11
|
+
/**
|
|
12
|
+
* The `fields` schema of a `viable:user-story` card.
|
|
13
|
+
*
|
|
14
|
+
* `area` is required, and a create that carries none is still valid by the time it is checked:
|
|
15
|
+
* validation runs after the planning middlewares, and the viable plugin's re-format hook fills the
|
|
16
|
+
* area of a narrative a person wrote.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ViableStoryFieldsSchema: JSONSchemaType<ViableStoryFields>;
|
|
19
|
+
/** The open `fields` of a reserved card type — nothing is decided about them yet. */
|
|
20
|
+
export declare const ViableOpenFieldsSchema: JSONSchemaType<Record<string, unknown>>;
|
|
21
|
+
/** A document carries nothing under `fields`: its payload is the specification body. */
|
|
22
|
+
export declare const ViableSpecFieldsSchema: JSONSchemaType<Record<string, never>>;
|
|
23
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/planning/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAOzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAiBtB,cAAc,CAAC,mBAAmB,CAAC,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAWpB,cAAc,CAAC,iBAAiB,CAAC,CAAA;AAEjD,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,EAKnB,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEvD,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,EAKnB,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { CODE_MAX } from '@owlmeans/planning';
|
|
2
|
+
import { ProjectArea } from '../areas/consts.js';
|
|
3
|
+
import { StoryKind } from '../ba/consts.js';
|
|
4
|
+
import { ConnectLlm, ConnectTarget } from '../connect/consts.js';
|
|
5
|
+
import { ProjectOriginSchema } from '../convert/schemas.js';
|
|
6
|
+
import { StoryActor } from '../design/runtime.js';
|
|
7
|
+
/**
|
|
8
|
+
* The `fields` schema of a `viable:project` card.
|
|
9
|
+
*
|
|
10
|
+
* A record-element schema: hand-written, cast, every optional key nullable with its type, every
|
|
11
|
+
* nullable enum listing `null`. Plain strings where the vocabulary grows in a library this record
|
|
12
|
+
* does not redeploy with (blueprint, case, game kind).
|
|
13
|
+
*/
|
|
14
|
+
export const ViableProjectFieldsSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
formerAliases: {
|
|
18
|
+
type: 'array', items: { type: 'string', minLength: 1, maxLength: CODE_MAX }, nullable: true,
|
|
19
|
+
},
|
|
20
|
+
language: { type: 'string', minLength: 2, maxLength: 16, nullable: true },
|
|
21
|
+
blueprint: { type: 'string', minLength: 1, maxLength: 64, nullable: true },
|
|
22
|
+
blueprintCase: { type: 'string', minLength: 1, maxLength: 64, nullable: true },
|
|
23
|
+
gameKind: { type: 'string', minLength: 1, maxLength: 64, nullable: true },
|
|
24
|
+
target: { type: 'string', enum: [...Object.values(ConnectTarget), null], nullable: true },
|
|
25
|
+
origin: { ...ProjectOriginSchema, nullable: true },
|
|
26
|
+
connectLlmMode: { type: 'string', enum: [...Object.values(ConnectLlm), null], nullable: true },
|
|
27
|
+
converterLlmMode: { type: 'string', enum: [...Object.values(ConnectLlm), null], nullable: true },
|
|
28
|
+
},
|
|
29
|
+
required: [],
|
|
30
|
+
additionalProperties: false,
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* The `fields` schema of a `viable:user-story` card.
|
|
34
|
+
*
|
|
35
|
+
* `area` is required, and a create that carries none is still valid by the time it is checked:
|
|
36
|
+
* validation runs after the planning middlewares, and the viable plugin's re-format hook fills the
|
|
37
|
+
* area of a narrative a person wrote.
|
|
38
|
+
*/
|
|
39
|
+
export const ViableStoryFieldsSchema = {
|
|
40
|
+
type: 'object',
|
|
41
|
+
properties: {
|
|
42
|
+
area: { type: 'string', enum: Object.values(ProjectArea) },
|
|
43
|
+
primary: { type: 'boolean' },
|
|
44
|
+
actor: { type: 'string', enum: [...Object.values(StoryActor), null], nullable: true },
|
|
45
|
+
warning: { type: 'string', maxLength: 1024, nullable: true },
|
|
46
|
+
kind: { type: 'string', enum: [...Object.values(StoryKind), null], nullable: true },
|
|
47
|
+
},
|
|
48
|
+
required: ['area', 'primary'],
|
|
49
|
+
additionalProperties: false,
|
|
50
|
+
};
|
|
51
|
+
/** The open `fields` of a reserved card type — nothing is decided about them yet. */
|
|
52
|
+
export const ViableOpenFieldsSchema = {
|
|
53
|
+
type: 'object',
|
|
54
|
+
properties: {},
|
|
55
|
+
required: [],
|
|
56
|
+
additionalProperties: true,
|
|
57
|
+
};
|
|
58
|
+
/** A document carries nothing under `fields`: its payload is the specification body. */
|
|
59
|
+
export const ViableSpecFieldsSchema = {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {},
|
|
62
|
+
required: [],
|
|
63
|
+
additionalProperties: false,
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/planning/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { Card, Project, Specification } from '@owlmeans/planning';
|
|
2
|
+
import type { ProjectArea } from '../areas/consts.js';
|
|
3
|
+
import type { StoryKind } from '../ba/consts.js';
|
|
4
|
+
import type { ConnectLlm, ConnectTarget } from '../connect/consts.js';
|
|
5
|
+
import type { ProjectOrigin } from '../convert/types.js';
|
|
6
|
+
import type { StoryActor } from '../design/runtime.js';
|
|
7
|
+
import type { StoryWriteInput } from '../metadata/types.js';
|
|
8
|
+
/**
|
|
9
|
+
* What a `viable:project` card keeps under `fields`.
|
|
10
|
+
*
|
|
11
|
+
* The alias is the card's `code`, the name its `title`; the brief parts are specifications. Every
|
|
12
|
+
* key is optional: a project created before a field existed carries none, and an absent value
|
|
13
|
+
* means the platform default (inherit a mode, the default blueprint, a cloud slot).
|
|
14
|
+
*/
|
|
15
|
+
export type ViableProjectFields = {
|
|
16
|
+
/** Aliases this project gave up. Names are retired, never freed to a sibling project. */
|
|
17
|
+
formerAliases?: string[];
|
|
18
|
+
/** The IETF tag generated UI text is written in. */
|
|
19
|
+
language?: string;
|
|
20
|
+
/** The blueprint id the project was drawn with. */
|
|
21
|
+
blueprint?: string;
|
|
22
|
+
/** The blueprint case classified from the prompt. Absent applies no patch. */
|
|
23
|
+
blueprintCase?: string;
|
|
24
|
+
/** How a game is played; absent for every other case. */
|
|
25
|
+
gameKind?: string;
|
|
26
|
+
/** Where the tree lives; absent is the platform's own slot. */
|
|
27
|
+
target?: ConnectTarget;
|
|
28
|
+
/** Where converted code came from; present only on an import. */
|
|
29
|
+
origin?: ProjectOrigin;
|
|
30
|
+
/** Who performs a run's model calls on this project; absent inherits the owner's preference. */
|
|
31
|
+
connectLlmMode?: ConnectLlm;
|
|
32
|
+
/** Who performs a conversion's model calls on this project; absent inherits. */
|
|
33
|
+
converterLlmMode?: ConnectLlm;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* What a `viable:user-story` card keeps under `fields`.
|
|
37
|
+
*
|
|
38
|
+
* The narrative is the card's `title`, the flow ordinal its `order` (a double — a connective story
|
|
39
|
+
* sits between two flow steps), the status its primary flow status.
|
|
40
|
+
*/
|
|
41
|
+
export type ViableStoryFields = {
|
|
42
|
+
/** The audience acting in the story; its screens hang under this area. */
|
|
43
|
+
area: ProjectArea;
|
|
44
|
+
/** The story whose screen is the project's front door. Exactly one per project. */
|
|
45
|
+
primary: boolean;
|
|
46
|
+
/** Who acts; absent is a person. */
|
|
47
|
+
actor?: StoryActor;
|
|
48
|
+
/** Why the last development did not end cleanly. Written as `''` to clear. */
|
|
49
|
+
warning?: string;
|
|
50
|
+
/** Which half of the analysis the story came from. */
|
|
51
|
+
kind?: StoryKind;
|
|
52
|
+
};
|
|
53
|
+
export interface ViableProjectCard extends Project {
|
|
54
|
+
fields: ViableProjectFields;
|
|
55
|
+
}
|
|
56
|
+
export interface ViableStoryCard extends Card {
|
|
57
|
+
fields: ViableStoryFields;
|
|
58
|
+
}
|
|
59
|
+
/** A document under a Viable card — the brief parts, the scaffold plan, a story design. */
|
|
60
|
+
export type ViableSpecification = Specification;
|
|
61
|
+
/**
|
|
62
|
+
* What a develop run hands the metadata store beside the card.
|
|
63
|
+
*
|
|
64
|
+
* The code, the narrative and the primary flag are the CARD's and are never passed separately — a
|
|
65
|
+
* second copy is a second answer. `status` defaults to the card's own.
|
|
66
|
+
*/
|
|
67
|
+
export type StoryWriteContent = Omit<StoryWriteInput, 'code' | 'narrative' | 'primary' | 'status'> & {
|
|
68
|
+
status?: string;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/planning/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,iEAAiE;IACjE,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,gGAAgG;IAChG,cAAc,CAAC,EAAE,UAAU,CAAA;IAC3B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,UAAU,CAAA;CAC9B,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,0EAA0E;IAC1E,IAAI,EAAE,WAAW,CAAA;IACjB,mFAAmF;IACnF,OAAO,EAAE,OAAO,CAAA;IAChB,oCAAoC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,MAAM,EAAE,mBAAmB,CAAA;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI;IAC3C,MAAM,EAAE,iBAAiB,CAAA;CAC1B;AAED,2FAA2F;AAC3F,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC,GAClE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/planning/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/scaffold/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAIzC,OAAO,KAAK,EACK,eAAe,EAAoB,YAAY,EAC/D,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/scaffold/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAIzC,OAAO,KAAK,EACK,eAAe,EAAoB,YAAY,EAC/D,MAAM,YAAY,CAAA;AA0OnB,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,eAAe,CAkBjE,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,YAAY,CA2B3D,CAAA"}
|
|
@@ -159,15 +159,20 @@ const GuestHomePlanSchema = {
|
|
|
159
159
|
hero: {
|
|
160
160
|
type: 'object',
|
|
161
161
|
properties: {
|
|
162
|
-
eyebrow: { type: 'string', description: 'A 2-4 word positioning phrase above the headline' },
|
|
163
162
|
headline: {
|
|
164
163
|
type: 'string',
|
|
165
164
|
description: 'The product\'s promise in one line, under 9 words. Never the product name alone'
|
|
166
165
|
},
|
|
167
166
|
sub: { type: 'string', description: 'One or two sentences: what it does and who it is for' },
|
|
168
167
|
cta: { type: 'string', description: 'The call-to-action label, 2-3 words' },
|
|
168
|
+
eyebrow: {
|
|
169
|
+
type: 'string', nullable: true,
|
|
170
|
+
description: 'OPTIONAL, normally omitted. A small badge above the headline - set it only when'
|
|
171
|
+
+ ' the specification explicitly asks for a label there. A landing page carries no badge by'
|
|
172
|
+
+ ' default: the headline is what positions the product'
|
|
173
|
+
},
|
|
169
174
|
},
|
|
170
|
-
required: ['
|
|
175
|
+
required: ['headline', 'sub', 'cta'],
|
|
171
176
|
additionalProperties: false,
|
|
172
177
|
},
|
|
173
178
|
problem: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/scaffold/schemas.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/scaffold/schemas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAKxC,MAAM,mBAAmB,GAAkC;IACzD,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,oDAAoD;IACjE,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;QACrF,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0DAA0D;SACxE;QACD,KAAK,EAAE;YACL,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI;YAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,iFAAiF;SAC/F;QACD,OAAO,EAAE;YACP,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI;YAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,qCAAqC;SACnD;QACD,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI;YAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,oCAAoC;SAClD;QACD,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI;YAC7B,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;oBACzD,KAAK,EAAE;wBACL,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG;wBACzC,WAAW,EAAE,+DAA+D;qBAC7E;iBACF;gBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC5B,oBAAoB,EAAE,KAAK;aAC5B;YACD,WAAW,EAAE,6BAA6B;SAC3C;QACD,KAAK,EAAE;YACL,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI;YAC7B,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;oBAChE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kDAAkD,EAAE;iBAC3F;gBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC5B,oBAAoB,EAAE,KAAK;aAC5B;YACD,WAAW,EAAE,2CAA2C;SACzD;KACF;IACD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;IACjC,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED,MAAM,uBAAuB,GAAsC;IACjE,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EAAE,8EAA8E;IAC3F,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iEAAiE;SAC/E;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,uEAAuE;kBAChF,4DAA4D;SACjE;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qEAAqE;kBAC9E,kFAAkF;SACvF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;oBAC/B,WAAW,EAAE,kDAAkD;0BAC3D,gEAAgE;0BAChE,qEAAqE;0BACrE,0BAA0B;iBAC/B;gBACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;gBACxE,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0DAA0D;iBACxE;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;YAC1C,oBAAoB,EAAE,KAAK;SAC5B;QACD,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,8EAA8E;kBACvF,8CAA8C;SACnD;QACD,gBAAgB,EAAE;YAChB,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI;YAC9B,WAAW,EAAE,6EAA6E;kBACtF,sFAAsF;kBACtF,mFAAmF;kBACnF,iDAAiD;SACtD;QACD,gBAAgB,EAAE;YAChB,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI;YAC9B,WAAW,EAAE,6EAA6E;kBACtF,uEAAuE;SAC5E;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;IACnE,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED,MAAM,sBAAsB,GAAqC;IAC/D,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,6EAA6E;IAC1F,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YAChC,WAAW,EAAE,gCAAgC;SAC9C;QACD,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBACtE,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gEAAgE;iBAC9E;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;YAC3B,oBAAoB,EAAE,KAAK;SAC5B;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,oDAAoD;kBAC7D,+DAA+D;SACpE;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC;IACvC,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED,MAAM,mBAAmB,GAAkC;IACzD,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,mCAAmC;IAChD,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iFAAiF;iBAC/F;gBACD,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE;gBAC5F,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;gBAC3E,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI;oBAC9B,WAAW,EAAE,iFAAiF;0BAC1F,0FAA0F;0BAC1F,sDAAsD;iBAC3D;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC;YACpC,oBAAoB,EAAE,KAAK;SAC5B;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBAClE,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wEAAwE;0BACjF,2BAA2B;iBAChC;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;YAC3B,oBAAoB,EAAE,KAAK;SAC5B;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;gBAC/E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;aACxF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;YAC3B,oBAAoB,EAAE,KAAK;SAC5B;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;oBACnE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;iBACjF;gBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;gBAC3B,oBAAoB,EAAE,KAAK;aAC5B;YACD,WAAW,EAAE,2EAA2E;SACzF;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;oBACzF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;oBACnF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;iBAC/D;gBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;gBACnC,oBAAoB,EAAE,KAAK;aAC5B;YACD,WAAW,EAAE,kCAAkC;SAChD;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC;IACrE,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAoC;IACpE,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE,gEAAgE;IAC7E,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,6EAA6E;kBACtF,iFAAiF;SACtF;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,yEAAyE;kBAClF,8DAA8D;SACnE;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;IACjC,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAiC;IAC9D,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,6EAA6E;UACtF,wBAAwB;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,qBAAqB;QAC/B,SAAS,EAAE,mBAAmB;QAC9B,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EAAE,iEAAiE;SAC/E;QACD,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,uBAAuB;YAC9B,WAAW,EAAE,kEAAkE;SAChF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,6EAA6E;kBACtF,wFAAwF;kBACxF,+BAA+B;SACpC;KACF;IACD,QAAQ,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;IACjE,oBAAoB,EAAE,KAAK;CAC5B,CAAA"}
|
|
@@ -100,10 +100,14 @@ export interface ProductIdentity {
|
|
|
100
100
|
/** The guest area's landing page — the product's public face. */
|
|
101
101
|
export interface GuestHomePlan {
|
|
102
102
|
hero: {
|
|
103
|
-
eyebrow: string;
|
|
104
103
|
headline: string;
|
|
105
104
|
sub: string;
|
|
106
105
|
cta: string;
|
|
106
|
+
/**
|
|
107
|
+
* A badge above the headline — OPTIONAL and normally absent. A landing page carries no badge
|
|
108
|
+
* unless its specification asks for one; the headline is what positions the product.
|
|
109
|
+
*/
|
|
110
|
+
eyebrow?: string;
|
|
107
111
|
};
|
|
108
112
|
problem: {
|
|
109
113
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scaffold/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAA;IACf,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,wEAAwE;IACxE,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3C,8BAA8B;IAC9B,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC3C;AAED,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAA;IACf,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAA;IACd,4CAA4C;IAC5C,MAAM,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IAChE,iEAAiE;IACjE,MAAM,EAAE,aAAa,CAAA;IACrB,wFAAwF;IACxF,IAAI,EAAE,OAAO,CAAA;IACb;;;;;;;;;;;;OAYG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,mFAAmF;AACnF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAA;IACjB,yDAAyD;IACzD,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,yDAAyD;IACzD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAA;IACZ,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scaffold/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/viable-common",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.20",
|
|
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.",
|
|
6
6
|
"type": "module",
|
|
@@ -59,11 +59,13 @@
|
|
|
59
59
|
"typescript": "^7.0.2"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@owlmeans/agent-common": "^0.1.18-rc.
|
|
63
|
-
"@owlmeans/entrypoint": "^0.1.18-rc.
|
|
64
|
-
"@owlmeans/error": "^0.1.18-rc.
|
|
65
|
-
"@owlmeans/llm-common": "^0.1.18-rc.
|
|
66
|
-
"@owlmeans/
|
|
62
|
+
"@owlmeans/agent-common": "^0.1.18-rc.31",
|
|
63
|
+
"@owlmeans/entrypoint": "^0.1.18-rc.27",
|
|
64
|
+
"@owlmeans/error": "^0.1.18-rc.26",
|
|
65
|
+
"@owlmeans/llm-common": "^0.1.18-rc.27",
|
|
66
|
+
"@owlmeans/planning": "^0.1.18-rc.0",
|
|
67
|
+
"@owlmeans/resource": "^0.1.18-rc.26",
|
|
68
|
+
"@owlmeans/route": "^0.1.18-rc.25"
|
|
67
69
|
},
|
|
68
70
|
"publishConfig": {
|
|
69
71
|
"access": "public"
|
package/src/ba/consts.ts
CHANGED
|
@@ -30,9 +30,8 @@ export enum ConnectingStoryKind {
|
|
|
30
30
|
* Which half of the analysis a story came from.
|
|
31
31
|
*
|
|
32
32
|
* `flow` stories implement the numbered steps of the main flow — each adds value to one record.
|
|
33
|
-
* `connective` stories are what a person needs to get from one step to the next.
|
|
34
|
-
*
|
|
35
|
-
* knows at creation time.
|
|
33
|
+
* `connective` stories are what a person needs to get from one step to the next. Persisted on the
|
|
34
|
+
* story card as `fields.kind`, so the distinction survives the pipeline that drew it.
|
|
36
35
|
*/
|
|
37
36
|
export enum StoryKind {
|
|
38
37
|
Flow = 'flow',
|
package/src/ba/helpers.ts
CHANGED
|
@@ -28,7 +28,8 @@ const canonical = (story: string): string => story.trim().replace(/\s+/g, ' ').t
|
|
|
28
28
|
*
|
|
29
29
|
* This is the only place the anchor is interpreted. Both halves of the feature — the prompt that
|
|
30
30
|
* produces it and the pipeline that persists the result — read it through here, or the two drift
|
|
31
|
-
* and nothing fails loudly enough to notice.
|
|
31
|
+
* and nothing fails loudly enough to notice. The CLAMPED anchor is carried out on each connective
|
|
32
|
+
* entry as `after`, which is what the story card's `follows` relationship is written from.
|
|
32
33
|
*
|
|
33
34
|
* Four properties are deliberate:
|
|
34
35
|
*
|
|
@@ -87,7 +88,7 @@ export const mergeConnectingStories = (
|
|
|
87
88
|
return flow.flatMap(({ story, area }, index) => [
|
|
88
89
|
{ story, area, kind: StoryKind.Flow },
|
|
89
90
|
...buckets[index]!.map(draft => (
|
|
90
|
-
{ story: draft.story.trim(), area: draft.area, kind: StoryKind.Connective }
|
|
91
|
+
{ story: draft.story.trim(), area: draft.area, kind: StoryKind.Connective, after: index + 1 }
|
|
91
92
|
)),
|
|
92
93
|
])
|
|
93
94
|
}
|
package/src/ba/types.ts
CHANGED
|
@@ -35,11 +35,14 @@ export interface ConnectingStoryList {
|
|
|
35
35
|
* One entry of the single ordered story list init persists — the flow interleaved with the
|
|
36
36
|
* stories that connect it.
|
|
37
37
|
*
|
|
38
|
-
* `kind`
|
|
39
|
-
*
|
|
38
|
+
* `kind` is persisted on the story card (`fields.kind`). `after` is present on a connective entry
|
|
39
|
+
* only and becomes the card's `follows` relationship: the 1-based position, counted among the
|
|
40
|
+
* `flow` entries of the same list, of the flow story it follows — already clamped, so it always
|
|
41
|
+
* names a flow story that list contains.
|
|
40
42
|
*/
|
|
41
43
|
export interface MergedStoryDraft extends StoryDraft {
|
|
42
44
|
kind: StoryKind
|
|
45
|
+
after?: number
|
|
43
46
|
}
|
|
44
47
|
|
|
45
48
|
export interface UserStory {
|
|
@@ -97,8 +100,20 @@ export interface Attribute {
|
|
|
97
100
|
description: string
|
|
98
101
|
}
|
|
99
102
|
|
|
103
|
+
/**
|
|
104
|
+
* The project BRIEF a generator reads — assembled from the project card and its specifications
|
|
105
|
+
* (`projectBriefOf`), never stored in this shape.
|
|
106
|
+
*/
|
|
100
107
|
export interface AgentProject {
|
|
101
108
|
name: string
|
|
109
|
+
/**
|
|
110
|
+
* The project card's `code` — the slug the platform minted and every generated address is
|
|
111
|
+
* composed from.
|
|
112
|
+
*
|
|
113
|
+
* Optional because a brief is also assembled before a project has one. A reader that needs a
|
|
114
|
+
* slug prefers this over re-deriving one from `name`: a rename changes the name, never the code.
|
|
115
|
+
*/
|
|
116
|
+
alias?: string
|
|
102
117
|
description: string
|
|
103
118
|
specification: string
|
|
104
119
|
designSystem: string
|
package/src/blueprint/case.ts
CHANGED
|
@@ -61,8 +61,8 @@ export interface BlueprintCaseDefinition {
|
|
|
61
61
|
/** What every AI case installs. The langchain peers are declared here, at ONE range. */
|
|
62
62
|
const AI_DEPS = {
|
|
63
63
|
[SubProject.Backend]: {
|
|
64
|
-
'@owlmeans/llm': '^0.1.18-rc.
|
|
65
|
-
'@owlmeans/agent': '^0.1.18-rc.
|
|
64
|
+
'@owlmeans/llm': '^0.1.18-rc.28',
|
|
65
|
+
'@owlmeans/agent': '^0.1.18-rc.29',
|
|
66
66
|
'@langchain/core': '^1.2.9',
|
|
67
67
|
'@langchain/anthropic': '^1.5.8',
|
|
68
68
|
'@langchain/openai': '^1.5.10',
|
|
@@ -214,7 +214,7 @@ in advance.
|
|
|
214
214
|
deps: {
|
|
215
215
|
[SubProject.Backend]: {
|
|
216
216
|
...AI_DEPS[SubProject.Backend],
|
|
217
|
-
'@owlmeans/agent-skills': '^0.1.18-rc.
|
|
217
|
+
'@owlmeans/agent-skills': '^0.1.18-rc.27',
|
|
218
218
|
},
|
|
219
219
|
},
|
|
220
220
|
libraries: AI_LIBRARIES,
|
package/src/connect/consts.ts
CHANGED
|
@@ -382,6 +382,11 @@ export const RES_CONNECT_SESSION = 'connect-session'
|
|
|
382
382
|
* the manager API all address the same aliases, and a client that had to be handed its own copy of
|
|
383
383
|
* the tree would be a second place for a name to drift. The platform spreads the declarations
|
|
384
384
|
* these produce into its own entrypoint list and binds handlers onto them.
|
|
385
|
+
*
|
|
386
|
+
* There is no story group. A user story is a planning CARD, read and written through the planning
|
|
387
|
+
* protocol tree the platform mounts beside this one (`makePlanningProtocols` in
|
|
388
|
+
* `@owlmeans/planning`) — one surface for the browser and a connector alike, so a story rule the
|
|
389
|
+
* platform enforces cannot be enforced on one of them only.
|
|
385
390
|
*/
|
|
386
391
|
export const connect = Object.freeze({
|
|
387
392
|
base: 'viable:manager-api:connect:base',
|
|
@@ -424,14 +429,6 @@ export const connect = Object.freeze({
|
|
|
424
429
|
inquiry: Object.freeze({
|
|
425
430
|
answer: 'viable:manager-api:connect:inquiry:answer',
|
|
426
431
|
}),
|
|
427
|
-
story: Object.freeze({
|
|
428
|
-
list: 'viable:manager-api:connect:story:list',
|
|
429
|
-
get: 'viable:manager-api:connect:story:get',
|
|
430
|
-
create: 'viable:manager-api:connect:story:create',
|
|
431
|
-
update: 'viable:manager-api:connect:story:update',
|
|
432
|
-
delete: 'viable:manager-api:connect:story:delete',
|
|
433
|
-
develop: 'viable:manager-api:connect:story:develop',
|
|
434
|
-
}),
|
|
435
432
|
files: Object.freeze({
|
|
436
433
|
list: 'viable:manager-api:connect:files:list',
|
|
437
434
|
}),
|
|
@@ -9,15 +9,13 @@ import {
|
|
|
9
9
|
ConnectJobParamsSchema, ConnectModifyBodySchema, ConnectOpParamsSchema, ConnectOpResultSchema,
|
|
10
10
|
ConnectPipelineParamsSchema, ConnectPipelineResumeBodySchema, ConnectProjectIdSchema,
|
|
11
11
|
ConnectProjectLlmBodySchema, ConnectSessionOpenSchema, ConnectSessionParamsSchema,
|
|
12
|
-
|
|
13
|
-
InquiryAnswerSchema,
|
|
12
|
+
ConnectWaitQuerySchema, InquiryAnswerSchema,
|
|
14
13
|
} from './schemas.js'
|
|
15
14
|
import type {
|
|
16
15
|
ConnectAttachBody, ConnectConfirmBody, ConnectConvertCreateBody, ConnectConvertProceedBody,
|
|
17
16
|
ConnectCreateBody, ConnectInquiryAnswerBody, ConnectJob, ConnectJobParams, ConnectModifyBody,
|
|
18
17
|
ConnectPipelineParams, ConnectPipelineResumeBody, ConnectProjectLlmBody, ConnectSessionOpen,
|
|
19
|
-
ConnectSessionParams,
|
|
20
|
-
ConvertCheck,
|
|
18
|
+
ConnectSessionParams, ConnectWaitQuery, ConversionStatusView, ConvertCheck,
|
|
21
19
|
} from './types.js'
|
|
22
20
|
import type { ConnectOpResult } from './ops.js'
|
|
23
21
|
import type { ConverterProjectLlmBody } from '../convert/types.js'
|
|
@@ -198,43 +196,6 @@ export const connectProtocols = (opts: ConnectEntrypointOptions) => {
|
|
|
198
196
|
|
|
199
197
|
},
|
|
200
198
|
|
|
201
|
-
// --- stories ---------------------------------------------------------------------------
|
|
202
|
-
story: {
|
|
203
|
-
list: protocol(
|
|
204
|
-
route(connect.story.list, '/story/:id', { parent: base, method: RouteMethod.GET }),
|
|
205
|
-
contract.request({ params: typed<{ id: string }>(ConnectProjectIdSchema), query: typed<ConnectStoryQuery>(ConnectStoryQuerySchema) }, typed())
|
|
206
|
-
),
|
|
207
|
-
create: protocol(
|
|
208
|
-
route(connect.story.create, '/story/:id', { parent: base, method: RouteMethod.POST }),
|
|
209
|
-
contract.request({ params: typed<{ id: string }>(ConnectProjectIdSchema), body: typed<ConnectStoryBody>(ConnectStoryBodySchema) }, typed())
|
|
210
|
-
),
|
|
211
|
-
get: protocol(
|
|
212
|
-
route(connect.story.get, '/story/:id/:storyId', {
|
|
213
|
-
parent: base, method: RouteMethod.GET
|
|
214
|
-
}),
|
|
215
|
-
contract.request({ params: typed<{ id: string, storyId: string }>(ConnectStoryParamsSchema) }, typed())
|
|
216
|
-
),
|
|
217
|
-
update: protocol(
|
|
218
|
-
route(connect.story.update, '/story/:id/:storyId', {
|
|
219
|
-
parent: base, method: RouteMethod.PUT
|
|
220
|
-
}),
|
|
221
|
-
contract.request({ params: typed<{ id: string, storyId: string }>(ConnectStoryParamsSchema), body: typed<ConnectStoryBody>(ConnectStoryBodySchema) }, typed())
|
|
222
|
-
),
|
|
223
|
-
delete: protocol(
|
|
224
|
-
route(connect.story.delete, '/story/:id/:storyId', {
|
|
225
|
-
parent: base, method: RouteMethod.DELETE
|
|
226
|
-
}),
|
|
227
|
-
contract.request({ params: typed<{ id: string, storyId: string }>(ConnectStoryParamsSchema) }, typed())
|
|
228
|
-
),
|
|
229
|
-
develop: protocol(
|
|
230
|
-
route(connect.story.develop, '/story/:id/:storyId/develop', {
|
|
231
|
-
parent: base, method: RouteMethod.POST
|
|
232
|
-
}),
|
|
233
|
-
contract.request({ params: typed<{ id: string, storyId: string }>(ConnectStoryParamsSchema) }, typed())
|
|
234
|
-
),
|
|
235
|
-
|
|
236
|
-
},
|
|
237
|
-
|
|
238
199
|
// --- generated files and conversion ----------------------------------------------------
|
|
239
200
|
files: {
|
|
240
201
|
list: protocol(
|