rhachet-roles-bhrain 0.2.0 β†’ 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/.test/getContextOpenAI.js +1 -1
  2. package/dist/.test/getContextOpenAI.js.map +1 -1
  3. package/dist/domain.operations/review/compileReviewPrompt.d.ts +22 -0
  4. package/dist/domain.operations/review/compileReviewPrompt.js +95 -0
  5. package/dist/domain.operations/review/compileReviewPrompt.js.map +1 -0
  6. package/dist/domain.operations/review/enumFilesFromDiffs.d.ts +8 -0
  7. package/dist/domain.operations/review/enumFilesFromDiffs.js +74 -0
  8. package/dist/domain.operations/review/enumFilesFromDiffs.js.map +1 -0
  9. package/dist/domain.operations/review/enumFilesFromGlob.d.ts +8 -0
  10. package/dist/domain.operations/review/enumFilesFromGlob.js +31 -0
  11. package/dist/domain.operations/review/enumFilesFromGlob.js.map +1 -0
  12. package/dist/domain.operations/review/estimateTokenCount.d.ts +9 -0
  13. package/dist/domain.operations/review/estimateTokenCount.js +20 -0
  14. package/dist/domain.operations/review/estimateTokenCount.js.map +1 -0
  15. package/dist/domain.operations/review/formatReviewOutput.d.ts +14 -0
  16. package/dist/domain.operations/review/formatReviewOutput.js +42 -0
  17. package/dist/domain.operations/review/formatReviewOutput.js.map +1 -0
  18. package/dist/domain.operations/review/genTokenBreakdownMarkdown.d.ts +19 -0
  19. package/dist/domain.operations/review/genTokenBreakdownMarkdown.js +110 -0
  20. package/dist/domain.operations/review/genTokenBreakdownMarkdown.js.map +1 -0
  21. package/dist/domain.operations/review/genTokenBreakdownReport.d.ts +24 -0
  22. package/dist/domain.operations/review/genTokenBreakdownReport.js +64 -0
  23. package/dist/domain.operations/review/genTokenBreakdownReport.js.map +1 -0
  24. package/dist/domain.operations/review/invokeClaudeCode.d.ts +22 -0
  25. package/dist/domain.operations/review/invokeClaudeCode.js +92 -0
  26. package/dist/domain.operations/review/invokeClaudeCode.js.map +1 -0
  27. package/dist/domain.operations/review/writeInputArtifacts.d.ts +27 -0
  28. package/dist/domain.operations/review/writeInputArtifacts.js +50 -0
  29. package/dist/domain.operations/review/writeInputArtifacts.js.map +1 -0
  30. package/dist/domain.operations/review/writeOutputArtifacts.d.ts +12 -0
  31. package/dist/domain.operations/review/writeOutputArtifacts.js +46 -0
  32. package/dist/domain.operations/review/writeOutputArtifacts.js.map +1 -0
  33. package/dist/roles/getRoleRegistry.js +2 -1
  34. package/dist/roles/getRoleRegistry.js.map +1 -1
  35. package/dist/roles/getRoleRegistry.readme.js +6 -0
  36. package/dist/roles/getRoleRegistry.readme.js.map +1 -1
  37. package/dist/roles/reviewer/briefs/review.tactics.md +60 -0
  38. package/dist/roles/reviewer/getReviewerRole.d.ts +6 -0
  39. package/dist/roles/reviewer/getReviewerRole.js +80 -0
  40. package/dist/roles/reviewer/getReviewerRole.js.map +1 -0
  41. package/dist/roles/reviewer/skills/review/review.d.ts +57 -0
  42. package/dist/roles/reviewer/skills/review/review.js +445 -0
  43. package/dist/roles/reviewer/skills/review/review.js.map +1 -0
  44. package/dist/roles/reviewer/skills/review/review.sh +21 -0
  45. package/dist/roles/reviewer/skills/review/review.ts +575 -0
  46. package/dist/roles/thinker/getThinkerRole.js +1 -1
  47. package/dist/roles/thinker/getThinkerRole.js.map +1 -1
  48. package/dist/roles/thinker/skills/brief.articulate/.demo/article.vision.v2025_08_19..i1.via_chatgpt.md +47 -0
  49. package/dist/roles/thinker/skills/brief.articulate/.demo/article.vision.v2025_08_19.i2.via_rhachet.md +60 -0
  50. package/dist/roles/thinker/skills/brief.articulate/.demo/diverge.v2025_08_17.i1.md +62 -0
  51. package/dist/roles/thinker/skills/brief.articulate/.demo/diverge.v2025_08_17.i1.with_feedback.md +89 -0
  52. package/dist/roles/thinker/skills/brief.articulate/.demo/diverge.v2025_08_17.i2.md +47 -0
  53. package/dist/roles/thinker/skills/brief.articulate/.demo/joke.v2025_08_15.i1.md +44 -0
  54. package/dist/roles/thinker/skills/brief.articulate/.demo/joke.v2025_08_15.i2.md +63 -0
  55. package/dist/roles/thinker/skills/brief.articulate/.demo/joke.v2025_08_15.i3.md +51 -0
  56. package/dist/roles/thinker/skills/brief.articulate/.demo/user-journey.v2025_08_17.i1.md +62 -0
  57. package/dist/roles/thinker/skills/brief.articulate/.demo/user-journey.v2025_08_17.i2.md +49 -0
  58. package/dist/roles/thinker/skills/brief.articulate/.readme.md +0 -0
  59. package/dist/roles/thinker/skills/brief.articulate/stepArticulate.skill.js +1 -1
  60. package/dist/roles/thinker/skills/brief.articulate/stepArticulate.skill.js.map +1 -1
  61. package/dist/roles/thinker/skills/brief.articulate/stepArticulate.skill.ts +168 -0
  62. package/dist/roles/thinker/skills/brief.articulate/stepArticulate.ts +157 -0
  63. package/dist/roles/thinker/skills/brief.catalogize/.demo/joke.types.v2025_08_28.i1.md +93 -0
  64. package/dist/roles/thinker/skills/brief.catalogize/.demo/joke.types.v2025_08_28.i2.md +84 -0
  65. package/dist/roles/thinker/skills/brief.catalogize/.demo/joke.types.v2025_09_28.i1.no_focus_context.md +8 -0
  66. package/dist/roles/thinker/skills/brief.catalogize/.demo/joke.types.v2025_09_28.i2.md +54 -0
  67. package/dist/roles/thinker/skills/brief.catalogize/.demo/persona.usecases.v2025_08_28.i1.md +62 -0
  68. package/dist/roles/thinker/skills/brief.catalogize/.demo/persona.usecases.v2025_08_28.i2.md +64 -0
  69. package/dist/roles/thinker/skills/brief.catalogize/.readme.md +5 -0
  70. package/dist/roles/thinker/skills/brief.catalogize/stepCatalogize.skill.js +1 -1
  71. package/dist/roles/thinker/skills/brief.catalogize/stepCatalogize.skill.js.map +1 -1
  72. package/dist/roles/thinker/skills/brief.catalogize/stepCatalogize.skill.ts +173 -0
  73. package/dist/roles/thinker/skills/brief.catalogize/stepCatalogize.ts +132 -0
  74. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.input.example.i4.md +3 -0
  75. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.input.example.i5.md +3 -0
  76. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.input.example.i6.md +3 -0
  77. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.input.example.md +3 -0
  78. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i1.md +52 -0
  79. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i2.md +51 -0
  80. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i3.md +47 -0
  81. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i4.md +62 -0
  82. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i5.md +47 -0
  83. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i6.md +53 -0
  84. package/dist/roles/thinker/skills/brief.demonstrate/.readme +3 -0
  85. package/dist/roles/thinker/skills/brief.demonstrate/stepDemonstrate.skill.js +1 -1
  86. package/dist/roles/thinker/skills/brief.demonstrate/stepDemonstrate.skill.js.map +1 -1
  87. package/dist/roles/thinker/skills/brief.demonstrate/stepDemonstrate.skill.ts +190 -0
  88. package/dist/roles/thinker/skills/brief.demonstrate/stepDemonstrate.ts +164 -0
  89. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input1.cluster.v2025_08_17.i1.md +72 -0
  90. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input1.cluster.v2025_08_17.i2.md +53 -0
  91. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input1.cluster.v2025_08_17.i3.which_objectives.md +58 -0
  92. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input1.cluster.v2025_08_17.i5.which_personas.md +64 -0
  93. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input2.cluster.v2025_08_17.i1.md +67 -0
  94. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input2.cluster.v2025_08_17.i2.md +49 -0
  95. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input2.cluster.v2025_08_17.i3.md +59 -0
  96. package/dist/roles/thinker/skills/khue.cluster/.readme.md +0 -0
  97. package/dist/roles/thinker/skills/khue.cluster/stepCluster.skill.js +1 -1
  98. package/dist/roles/thinker/skills/khue.cluster/stepCluster.skill.js.map +1 -1
  99. package/dist/roles/thinker/skills/khue.cluster/stepCluster.skill.ts +174 -0
  100. package/dist/roles/thinker/skills/khue.cluster/stepCluster.ts +150 -0
  101. package/dist/roles/thinker/skills/khue.decompose/.readme.md +9 -0
  102. package/dist/roles/thinker/skills/khue.diverge/.demo/joke.examples.v2025_08_17.i2.md +23 -0
  103. package/dist/roles/thinker/skills/khue.diverge/.demo/joke.examples.v2025_08_17.i3.md +23 -0
  104. package/dist/roles/thinker/skills/khue.diverge/.demo/joke.varieties.v2025_08_17.i1.md +23 -0
  105. package/dist/roles/thinker/skills/khue.diverge/.demo/userjourney.examples.v2025_08_17.i1.md +9 -0
  106. package/dist/roles/thinker/skills/khue.diverge/.demo/userjourney.examples.v2025_08_17.i2.md +9 -0
  107. package/dist/roles/thinker/skills/khue.diverge/.demo/userjourney.examples.v2025_08_17.i3.md +23 -0
  108. package/dist/roles/thinker/skills/khue.diverge/.demo/userjourney.examples.v2025_08_17.i4.folksy.md +9 -0
  109. package/dist/roles/thinker/skills/khue.diverge/.demo/userjourney.examples.v2025_08_17.i5.folksy.md +23 -0
  110. package/dist/roles/thinker/skills/khue.diverge/.readme.md +0 -0
  111. package/dist/roles/thinker/skills/khue.diverge/stepDiverge.skill.js +1 -1
  112. package/dist/roles/thinker/skills/khue.diverge/stepDiverge.skill.js.map +1 -1
  113. package/dist/roles/thinker/skills/khue.diverge/stepDiverge.skill.ts +149 -0
  114. package/dist/roles/thinker/skills/khue.diverge/stepDiverge.ts +151 -0
  115. package/dist/roles/thinker/skills/khue.encompose/.readme.md +7 -0
  116. package/dist/roles/thinker/skills/khue.instantiate/.readme.md +14 -0
  117. package/dist/roles/thinker/skills/khue.instantiate/stepInstantiate.skill.js +1 -1
  118. package/dist/roles/thinker/skills/khue.instantiate/stepInstantiate.skill.js.map +1 -1
  119. package/dist/roles/thinker/skills/khue.instantiate/stepInstantiate.skill.ts +190 -0
  120. package/dist/roles/thinker/skills/khue.instantiate/stepInstantiate.ts +132 -0
  121. package/dist/roles/thinker/skills/khue.triage/.demo/laughs.v2025_08_18.i1.md +29 -0
  122. package/dist/roles/thinker/skills/khue.triage/.demo/user.journeys.v2025_08_17.i1.md +86 -0
  123. package/dist/roles/thinker/skills/khue.triage/.demo/user.journeys.v2025_08_17.i2.md +68 -0
  124. package/dist/roles/thinker/skills/khue.triage/.readme.md +0 -0
  125. package/dist/roles/thinker/skills/khue.triage/stepTriage.skill.js +1 -1
  126. package/dist/roles/thinker/skills/khue.triage/stepTriage.skill.js.map +1 -1
  127. package/dist/roles/thinker/skills/khue.triage/stepTriage.skill.ts +174 -0
  128. package/dist/roles/thinker/skills/khue.triage/stepTriage.ts +153 -0
  129. package/package.json +7 -6
  130. package/readme.md +55 -0
@@ -0,0 +1,173 @@
1
+ import { glob } from 'fast-glob';
2
+ import { enrollThread, genContextStitchTrail, genRoleSkill } from 'rhachet';
3
+ import { genArtifactGitFile, getArtifactObsDir } from 'rhachet-artifact-git';
4
+
5
+ import { genContextLogTrail } from '@src/.test/genContextLogTrail';
6
+ import { getContextOpenAI } from '@src/.test/getContextOpenAI';
7
+ import { setSkillOutputSrc } from '@src/domain.operations/artifact/setSkillOutputSrc';
8
+ import { genStitchStreamToDisk } from '@src/domain.operations/context/genStitchStreamToDisk';
9
+
10
+ import { loopCatalogize } from './stepCatalogize';
11
+
12
+ export const SKILL_CATALOGIZE = genRoleSkill({
13
+ slug: 'catalogize',
14
+ route: loopCatalogize,
15
+ threads: {
16
+ lookup: {
17
+ output: {
18
+ source: 'process.argv',
19
+ char: 'o',
20
+ desc: 'the output file to write against',
21
+ type: 'string',
22
+ },
23
+ goal: {
24
+ source: 'process.argv',
25
+ char: 'g',
26
+ desc: 'the goal of the request',
27
+ type: '?string',
28
+ },
29
+ references: {
30
+ source: 'process.argv',
31
+ char: 'f',
32
+ desc: 'reference files to to use, if any; delimit with commas',
33
+ type: '?string',
34
+ },
35
+ briefs: {
36
+ source: 'process.argv',
37
+ char: 'b',
38
+ desc: 'brief files to to use, if any; delimit with commas',
39
+ type: '?string',
40
+ },
41
+ },
42
+ assess: (
43
+ input,
44
+ ): input is {
45
+ output: string;
46
+ goal: string;
47
+ references: string;
48
+ briefs: string;
49
+ ask: string;
50
+ } => typeof input.output === 'string',
51
+ instantiate: async (input: {
52
+ output: string;
53
+ goal: string;
54
+ references: string;
55
+ briefs: string;
56
+ ask: string;
57
+ }) => {
58
+ // declare where all the artifacts will be found
59
+ const obsDir = getArtifactObsDir({ uri: input.output });
60
+ const artifacts = {
61
+ goal: {
62
+ concept: genArtifactGitFile(
63
+ { uri: obsDir + '.goal.concept.md' },
64
+ { versions: true },
65
+ ),
66
+ context: genArtifactGitFile(
67
+ { uri: obsDir + '.goal.context.md' },
68
+ { versions: true },
69
+ ),
70
+ },
71
+ feedback: genArtifactGitFile(
72
+ { uri: obsDir + '.feedback.md' },
73
+ { versions: true },
74
+ ),
75
+ 'focus.context': genArtifactGitFile(
76
+ { uri: obsDir + '.focus.context.md' },
77
+ { versions: true },
78
+ ),
79
+ 'focus.concept': genArtifactGitFile(
80
+ { uri: input.output },
81
+ { versions: true },
82
+ ),
83
+ references: (
84
+ await Promise.all(
85
+ input.references
86
+ ?.split(',')
87
+ .filter((uri) => !!uri)
88
+ .map(async (pattern) => await glob(pattern)) ?? [], // support glob references
89
+ )
90
+ )
91
+ .flat()
92
+ .map((reference) =>
93
+ genArtifactGitFile({ uri: reference }, { access: 'readonly' }),
94
+ ),
95
+ briefs:
96
+ input.briefs
97
+ ?.split(',')
98
+ .filter((uri) => !!uri)
99
+ .map((brief) =>
100
+ genArtifactGitFile({ uri: brief }, { access: 'readonly' }),
101
+ ) ?? [],
102
+ };
103
+
104
+ // detect the goal of the caller
105
+ const goalConcept: string = await (async () => {
106
+ // if goal explicitly defined, use it
107
+ if (input.goal)
108
+ return (
109
+ (
110
+ await genArtifactGitFile(
111
+ { uri: input.goal },
112
+ { access: 'readonly' },
113
+ ).get()
114
+ )?.content ?? input.ask
115
+ );
116
+
117
+ // otherwise, assume its the ask
118
+ return input.ask;
119
+ })();
120
+ await artifacts.goal.concept.set({ content: goalConcept });
121
+
122
+ // add an src file for historic record
123
+ await setSkillOutputSrc({ skillUri: 'bhrain.catalogize', opts: input }); // todo: get skillUri from context
124
+
125
+ return {
126
+ caller: await enrollThread({
127
+ role: 'caller',
128
+ stash: {
129
+ ask: '',
130
+ art: {
131
+ 'foci.goal.concept': artifacts.goal.concept,
132
+ 'foci.goal.context': artifacts.goal.context,
133
+ feedback: artifacts.feedback,
134
+ },
135
+ refs: artifacts.references,
136
+ },
137
+ }),
138
+ thinker: await enrollThread({
139
+ role: 'thinker',
140
+ stash: {
141
+ art: {
142
+ 'focus.context': artifacts['focus.context'],
143
+ 'focus.concept': artifacts['focus.concept'],
144
+ },
145
+ briefs: artifacts.briefs,
146
+ },
147
+ }),
148
+ };
149
+ },
150
+ },
151
+ context: {
152
+ lookup: {
153
+ apiKeyOpenai: {
154
+ source: 'process.env',
155
+ envar: 'OPENAI_API_KEY',
156
+ desc: 'the openai key to use',
157
+ type: 'string',
158
+ },
159
+ },
160
+ assess: (input): input is { apiKeyOpenai: string } =>
161
+ typeof input.apiKeyOpenai === 'string',
162
+ instantiate: () => {
163
+ return {
164
+ ...getContextOpenAI(),
165
+ ...genContextLogTrail(),
166
+ ...genContextStitchTrail({
167
+ stream: genStitchStreamToDisk({ dir: process.cwd() }), // stream events to disk
168
+ }),
169
+ };
170
+ },
171
+ },
172
+ readme: '',
173
+ });
@@ -0,0 +1,132 @@
1
+ import {
2
+ asStitcherFlat,
3
+ type GStitcher,
4
+ genStitchRoute,
5
+ type RoleContext,
6
+ StitchStepCompute,
7
+ type Threads,
8
+ } from 'rhachet';
9
+ import type { Artifact } from 'rhachet-artifact';
10
+ import type { GitFile } from 'rhachet-artifact-git';
11
+
12
+ import type { Focus } from '@src/_topublish/rhachet-roles-bhrain/src/domain/objects/Focus';
13
+ import type { ContextOpenAI } from '@src/access/sdk/sdkOpenAi';
14
+ import { genLoopFeedback } from '@src/domain.operations/artifact/genLoopFeedback';
15
+ import { getThinkerBriefs } from '@src/roles/thinker/getThinkerBrief';
16
+ import { stepInstantiate } from '@src/roles/thinker/skills/khue.instantiate/stepInstantiate';
17
+
18
+ const BRIEFS_FOR_CATALOGIZE = getThinkerBriefs([
19
+ 'cognition/cog021.structs.catalog.md',
20
+ 'knowledge/kno201.documents.catalogs.[article].md',
21
+ 'knowledge/kno201.documents._.[catalog].md',
22
+ 'knowledge/kno301.doc.enbrief.2._.[catalog].md',
23
+ 'knowledge/kno301.doc.enbrief.2.catalogize.[article].md',
24
+ 'knowledge/kno301.doc.enbrief.2.catalogize.[lesson].md',
25
+ 'knowledge/kno301.doc.enbrief.1.from_instances.[demo].color.md',
26
+ 'knowledge/kno301.doc.enbrief.1.from_instances.[demo].gravity.md',
27
+ 'knowledge/kno301.doc.enbrief.1.from_instances.[demo].entropy.md',
28
+ 'knowledge/kno501.doc.enbrief.catalog.structure1.[article].md',
29
+ 'knowledge/kno501.doc.enbrief.catalog.structure1.[lesson].template.md',
30
+ ]);
31
+
32
+ type StitcherDesired = GStitcher<
33
+ Threads<{
34
+ caller: RoleContext<
35
+ 'caller',
36
+ {
37
+ art: {
38
+ feedback: Artifact<typeof GitFile>;
39
+ 'foci.goal.concept': Focus['concept'];
40
+ 'foci.goal.context': Focus['context'];
41
+ };
42
+ refs: Artifact<typeof GitFile>[];
43
+ }
44
+ >;
45
+ thinker: RoleContext<
46
+ 'thinker',
47
+ {
48
+ art: {
49
+ 'focus.concept': Focus['concept'];
50
+ 'focus.context': Focus['context'];
51
+ };
52
+ briefs: Artifact<typeof GitFile>[];
53
+ }
54
+ >;
55
+ }>,
56
+ ContextOpenAI & GStitcher['context'],
57
+ { content: string }
58
+ >;
59
+
60
+ const stepAddThinkerBriefs = new StitchStepCompute<
61
+ GStitcher<
62
+ StitcherDesired['threads'],
63
+ GStitcher['context'],
64
+ { briefs: { before: string[]; after: string[] } }
65
+ >
66
+ >({
67
+ slug: '@[thinker]<getBriefs>',
68
+ readme: "adds a set of briefs to the @[thinker]'s context",
69
+ form: 'COMPUTE',
70
+ stitchee: 'thinker',
71
+ invoke: async ({ threads }) => {
72
+ // identify the prior briefs
73
+ const briefsBeforeUnsanitized = threads.thinker.context.stash.briefs;
74
+
75
+ // drop the briefs if they were already included (we'll put them at the end again, so they're the last thought)
76
+ const briefsBefore = briefsBeforeUnsanitized.filter(
77
+ (b) => !BRIEFS_FOR_CATALOGIZE.includes(b),
78
+ );
79
+
80
+ // append these briefs
81
+ const briefsAfter = [...briefsBefore, ...BRIEFS_FOR_CATALOGIZE];
82
+
83
+ // add the briefs to the thinker's context
84
+ threads.thinker.context.stash.briefs = briefsAfter;
85
+
86
+ // extend the focus context to explicitly know to use these briefs; // todo: put this into its own step for observability in stitch trail
87
+ const focusContextBefore = (
88
+ await threads.thinker.context.stash.art['focus.context'].get()
89
+ )?.content;
90
+ const focusContextToAdd = `
91
+ instantiate the concept as a [catalog] via the <catalogize> mechanism, defined in your briefs.
92
+
93
+ in particular, leverage 'catalog.structure.s1' when possible
94
+ `.trim();
95
+ const focusContextAfter = [
96
+ focusContextBefore,
97
+ '',
98
+ '---',
99
+ '',
100
+ focusContextToAdd,
101
+ ].join('\n');
102
+ await threads.thinker.context.stash.art['focus.context'].set({
103
+ content: focusContextAfter,
104
+ });
105
+
106
+ // and then report that we did so
107
+ return {
108
+ input: null,
109
+ output: {
110
+ briefs: {
111
+ before: briefsBefore.map((artifact) => artifact.ref.uri),
112
+ after: briefsAfter.map((artifact) => artifact.ref.uri),
113
+ },
114
+ },
115
+ };
116
+ },
117
+ });
118
+
119
+ export const stepCatalogize = asStitcherFlat<StitcherDesired>(
120
+ genStitchRoute({
121
+ slug: '@[thinker]<catalogize>',
122
+ readme:
123
+ '@[thinker]<getBriefs> -> @[thinker]<instantiate>[catalog] -> [instance][catalog]',
124
+ sequence: [stepAddThinkerBriefs, stepInstantiate],
125
+ }),
126
+ );
127
+
128
+ export const loopCatalogize = genLoopFeedback({
129
+ stitchee: 'thinker',
130
+ artee: 'focus.concept',
131
+ repeatee: stepCatalogize,
132
+ });
@@ -0,0 +1,3 @@
1
+ concept = user journey
2
+
3
+ demonstrate via `walkthrough` = `a road tripper planning a route with a digital map for scenic stops`
@@ -0,0 +1,3 @@
1
+ concept = [user journey] x [a road tripper planning a route with a digital map for scenic stops]
2
+
3
+ demonstrate via `walkthrough`
@@ -0,0 +1,3 @@
1
+ concept = [user journey]
2
+
3
+ demonstrate via `walkthrough` = [a road tripper planning a route with a digital map for scenic stops]
@@ -0,0 +1,3 @@
1
+ concept = [user journey]
2
+
3
+ demonstrate via `walkthrough` = [a road tripper planning a route with a digital map for scenic stops]
@@ -0,0 +1,52 @@
1
+ # 🧩 .brief.demo: `road trip planning` via `example` = `digital map for scenic stops`
2
+
3
+ ## πŸ’‘ concept
4
+
5
+ road trip planning involves designing a journey that includes specific routes, stops, and schedules, optimized for a desired travel experience. digital maps enhance this process by providing real-time navigation, route customization, and access to information on scenic and practical stops.
6
+
7
+ ## ❓ question
8
+
9
+ > what is an example of road trip planning?
10
+
11
+ ## πŸ“Œ example: using a digital map for scenic stops
12
+
13
+ ### πŸ“Œ.πŸ“– what
14
+
15
+ > what does using a digital map for scenic stops entail?
16
+
17
+ using a digital map for planning a road trip focuses on selecting routes that accommodate scenic stops, enhancing travel experiences with curated detours and sights along the journey. it involves inputting start and end points, and choosing routes that prioritize scenic value or landmark visits, supported by digital mapping features.
18
+
19
+ - **route selection**
20
+ - selecting pathways that maximize scenic value over directness
21
+ - *example:* choosing coastal highways over interstates for ocean views
22
+ - adjusting the route for side trips to landmarks or attractions
23
+
24
+ - **integration of technology**
25
+ - using apps like google maps or waze to identify scenic spots and detours
26
+ - *example:* employing satellite view to spot parks or bodies of water
27
+ - accessing real-time traffic updates to adjust plans dynamically
28
+
29
+ - **planning stops**
30
+ - identifying notable stops for rest, photos, or local experiences
31
+ - *example:* marking national parks or historical sites as waypoints
32
+ - arranging timing to ensure stops align with daylight or operational hours
33
+
34
+ ### πŸ“Œ.πŸ” how
35
+
36
+ > how is using a digital map for scenic stops an example of road trip planning?
37
+
38
+ using a digital map to plan a road trip with scenic stops exemplifies effective journey design by incorporating technology to enhance traveler experience and optimize route efficiency.
39
+
40
+ - **experience enhancement**
41
+ - improves the quality of the journey by including scenic and cultural landmarks
42
+ - offers flexibility in planning, allowing for spontaneous detours based on interest
43
+
44
+ - **efficiency and convenience**
45
+ - digital route planning minimizes travel stress with instant updates and alternative routing
46
+ - streamlines location scouting, reducing the need for manual guidebooks or paper maps
47
+
48
+ - **technology integration**
49
+ - leverages apps for multiple purposes: navigation, traffic management, and sightseeing
50
+ - supports informed choices with access to reviews, ratings, and user-generated content
51
+
52
+ together, these aspects create a comprehensive example of utilizing contemporary tools to refine and enrich the road trip experience.
@@ -0,0 +1,51 @@
1
+ # 🧩 .brief.demo: `road trip planning` via `walkthrough` = `scenic stops with a digital map`
2
+
3
+ ## πŸ’‘ concept
4
+ road trip planning involves organizing a journey by selecting routes, destinations, and activities that align with the traveler's interests, using tools such as digital maps to enhance the overall experience.
5
+
6
+ ## ❓ question
7
+ > how can a road tripper plan a route using a digital map for scenic stops?
8
+
9
+ ## πŸ“Œ walkthrough: planning a route with scenic stops
10
+
11
+ ### πŸ“Œ.πŸ“– what
12
+
13
+ > what is involved in planning a scenic road trip route using a digital map?
14
+
15
+ this planning process involves utilizing a digital map to identify and select scenic stops along a road trip path. it requires understanding both the map's functionalities and the tripper's preferences to create a satisfying and memorable travel experience.
16
+
17
+ - **digital map features**
18
+ - **search and discovery**: enter destinations and view routes; use filters to find scenic stops
19
+ - example: input "scenic highways" or "national parks" into the search bar to see options along the route
20
+ - **custom markers and notes**: pin locations and add personal notes for future reference
21
+ - example: mark "lookout point" and add a note: "great for sunsets"
22
+ - **real-time updates**: access live traffic conditions and estimated travel times
23
+ - example: toggle real-time traffic to avoid congested areas
24
+
25
+ - **trip optimization**
26
+ - **route customization**: adjust the path for desired stops and detours
27
+ - example: drag route line to include a favorite hiking trail
28
+ - **itinerary planning**: set time slots for each stop to maximize the day
29
+ - example: plan a morning stop at a lakeside park, followed by a lunch break at a local diner
30
+ - **alternative routes**: explore multiple paths to balance scenic beauty with travel efficiency
31
+ - example: compare scenic coastal routes vs. direct highways for time and experience balance
32
+
33
+ ### πŸ“Œ.πŸ” how
34
+
35
+ > how does this walkthrough demonstrate effective road trip planning with a digital map?
36
+
37
+ this walkthrough showcases road trip planning by illustrating the integration of technology, personal interests, and logistical considerations. it highlights the map's role in facilitating a personalized, efficient journey while maintaining flexibility.
38
+
39
+ - **technology integration**
40
+ - **enhanced exploration**: digital maps provide comprehensive visual data and search capabilities to uncover less-known scenic spots
41
+ - **real-time adaptability**: live traffic and weather updates allow for dynamic adjustments, ensuring a smooth journey
42
+
43
+ - **personalized travel experience**
44
+ - **interest alignment**: filtering for scenic stops ensures visits to places that match personal preferences
45
+ - **documenting and sharing**: custom markers and notes allow for shared experiences and future trip reference, enriching the travel narrative
46
+
47
+ - **logistical balance**
48
+ - **optimized scheduling**: itinerary tools balance time at each stop with overall trip progress, preventing rushed or leisurely days
49
+ - **efficient navigation**: contour the route with both speed and scenic enjoyment, leveraging real-time feedback for the best path forward
50
+
51
+ together, these elements articulate a seamless approach to road trip planning that combines strategy with spontaneity, all anchored by digital map tools.
@@ -0,0 +1,47 @@
1
+ # 🧩 .brief.demo: `user journey` via `walkthrough`
2
+
3
+ ## πŸ’‘ concept
4
+
5
+ a user journey represents the experience and steps a user takes to achieve a specific goal within a system or service, often visualized in stages to improve understanding of user interactions and touchpoints.
6
+
7
+ ## ❓ question
8
+
9
+ > how is the user journey demonstrated via a walkthrough?
10
+
11
+ ## πŸ“Œ example: road tripper planning a route with a digital map for scenic stops
12
+
13
+ ### πŸ“Œ.πŸ“– what
14
+
15
+ > what is the road tripper planning journey?
16
+
17
+ a road tripper uses a digital map application to plan a route that includes scenic stops. the journey involves several stages, from initial setup to final navigation, focusing on interaction points with the application.
18
+
19
+ - **initial setup**:
20
+ - **goal identification**: user decides on a scenic road trip and opens the digital map app.
21
+ - **preferences input**: user selects preferences for scenic spots and desired driving distance per day.
22
+
23
+ - **route planning**:
24
+ - **exploration and selection**: user explores available scenic stops suggested by the app, using filters for categories like nature, historical sites, or local cuisine.
25
+ - **itinerary building**: user selects preferred stops and adds them to the route.
26
+
27
+ - **navigation**:
28
+ - **real-time directions**: user follows turn-by-turn navigation provided by the app.
29
+ - **adaptive updates**: app suggests alternate routes or stops based on current traffic or user preferences.
30
+
31
+ ### πŸ“Œ.πŸ” how
32
+
33
+ > how does the user journey exemplify its concept via a walkthrough?
34
+
35
+ the user journey map illustrates touchpoints and decisions a road tripper encounters within the digital map app, providing practical insights into user interaction:
36
+
37
+ - **touchpoints**:
38
+ - engaging with app features like inputting preferences, exploring options, and building a route shows how users move through phases.
39
+
40
+ - **interaction flow**:
41
+ - navigating the map and making decisions on stops offers insight into user decision-making processes and potential friction points.
42
+
43
+ - **user engagement**:
44
+ - the seamless process from initial setup to navigation demonstrates user experience and app functionality, revealing areas for enhancement or innovation.
45
+
46
+ - **feedback loops**:
47
+ - how the app adapts based on user feedback (e.g., preferences and real-time navigation changes) illustrates user-centered design's importance in enhancing journey satisfaction.
@@ -0,0 +1,62 @@
1
+ # 🧩 .brief.demo: `user journey` via `walkthrough` = `a road tripper planning a route with a digital map for scenic stops`
2
+
3
+ ## πŸ’‘ concept
4
+
5
+ a user journey is a sequence of interactions a user experiences when engaging with a product or service to achieve a specific goal. it focuses on the touchpoints between the user and the system that facilitate the user's end goal, illustrating the user's needs, actions, emotions, and perceptions.
6
+
7
+ ## ❓ question
8
+
9
+ > how can we demonstrate a user journey through a walkthrough?
10
+
11
+ ## πŸ“Œ walkthrough: planning a road trip with a digital map
12
+
13
+ ### πŸ“Œ.πŸ“– what
14
+
15
+ > what is the user journey of planning a road trip with a digital map?
16
+
17
+ a digital map is used by a road tripper to plan a route with scenic spots, aligning with the essence of a user journey through sequential, user-centric touchpoints. this journey involves:
18
+
19
+ - **initial decision**
20
+ - the road tripper decides to embark on a scenic road trip and needs to plan the route.
21
+ - emotionally, the user is excited and anticipates discovering new places.
22
+
23
+ - **launching the map**
24
+ - the user opens a digital map application to begin the planning process.
25
+ - the interface is the first point of interaction, offering a familiar and intuitive layout, generating comfort.
26
+
27
+ - **entering the start and end points**
28
+ - the user inputs their current location and desired endpoint to generate potential routes.
29
+ - user feels engaged and hopeful as multiple route options are presented.
30
+
31
+ - **selecting a scenic route**
32
+ - the map suggests alternative routes emphasizing scenic views and attractions.
33
+ - by filtering for scenic routes, the user feels adventurous and curious.
34
+
35
+ - **adding stops**
36
+ - user explores the map to add points of interest like parks, historical sites, and diners along the route.
37
+ - excitement grows as the user customizes the trip, adding layers of experiences.
38
+
39
+ - **adjusting for time and preferences**
40
+ - user evaluates travel time and makes adjustments based on personal preferences for driving duration and stop frequency.
41
+ - combination of relaxation and control as the trip is tailored further.
42
+
43
+ - **final review and saving the itinerary**
44
+ - user reviews the completed itinerary within the app and saves it for navigation.
45
+ - satisfaction is high due to the interactive nature and personalized trip ahead.
46
+
47
+ - **embarking on the journey**
48
+ - the final step involves activating navigation and starting the adventure.
49
+ - anticipatory thrill evident as the journey formally begins.
50
+
51
+ ### πŸ“Œ.πŸ” how
52
+
53
+ > how does this journey exemplify a user journey?
54
+
55
+ the road trip planning journey exemplifies a user journey by showcasing:
56
+
57
+ - **goal-oriented interaction**: at each stage, the user's actions are directed towards the ultimate goal of creating a memorable road trip.
58
+ - **touchpoints and feedback loops**: interactions with the digital map generate continuous feedback, enhancing user satisfaction and decision-making.
59
+ - **emotional progression**: from excitement and curiosity at inception to satisfaction and anticipation at realization, the journey encapsulates the user's emotional landscape.
60
+ - **user-centered design**: the map app is designed to surface scenic options, allow customization, and assist in trip optimization, all centered around enhancing user experience.
61
+
62
+ this walkthrough renders abstract elements of user journeys tangible through a scenario many can relate to, enhancing understanding via a concrete instance.
@@ -0,0 +1,47 @@
1
+ # 🧩 .brief.demo: `user journey` via `walkthrough` = `a road tripper planning a route with a digital map for scenic stops`
2
+
3
+ ## πŸ’‘ Concept
4
+
5
+ A user journey is the complete experience a user has when interacting with a product or service, from initial discovery through usage and beyond. It maps every touchpoint and path a user may take, often represented visually to understand and improve user experiences.
6
+
7
+ ## ❓ Question
8
+
9
+ > How does a road tripper plan a route with a digital map for scenic stops?
10
+
11
+ ## πŸ“Œ Walkthrough: Planning a Scenic Road Trip with a Digital Map
12
+
13
+ ### πŸ“Œ.πŸ“– What
14
+
15
+ > What does the road trip planning journey involve?
16
+
17
+ 1. **Preparation Phase**
18
+ - **Define Goals**: The road tripper determines the primary goal of the trip (e.g., visiting national parks, coastal drives).
19
+ - **Select Tools**: They choose a digital mapping tool (e.g., Google Maps, Waze) for route planning, considering features like traffic updates, offline maps, and user reviews.
20
+
21
+ 2. **Route Planning Phase**
22
+ - **Initial Route Input**: The road tripper inputs starting point and destination into the mapping tool.
23
+ - **Customizing the Path**: They explore suggested routes, comparing distance, time, and scenic detour options.
24
+ - **Scenic Stops Identification**: Using the map’s search features, they identify scenic spots along the route, such as trails, overlooks, and local attractions.
25
+ - **Incorporate Stops**: Selected stops are added to the itinerary, balancing desired locations with travel time.
26
+
27
+ 3. **Logistical Coordination**
28
+ - **Accommodation Search**: Based on route and stops, find accommodations for overnight stays, factoring in proximity to scenic locations.
29
+ - **Optimize for Time and Experience**: Adjust departure times for optimal arrival at stops during peak scenic conditions (e.g., sunset views).
30
+ - **Resource Planning**: Check for necessary resources (e.g., fuel stations, rest areas) along the planned route.
31
+
32
+ 4. **Execution Phase**
33
+ - **Real-Time Navigation**: During the trip, they use GPS for real-time updates and re-routing if needed due to traffic or spontaneous detours.
34
+ - **Experience Amplification**: Leverage map features like user reviews and photos to enhance visits to planned scenic stops.
35
+
36
+ ### πŸ“Œ.πŸ” How
37
+
38
+ > How does this planning exemplify a user journey?
39
+
40
+ This user journey exemplifies the concept through the following elements:
41
+
42
+ - **Touchpoints Mapping**: Every interaction with the digital map, from initial search to real-time navigation, is a touchpoint designed for seamless user experience.
43
+ - **Goal-Oriented Interaction**: The journey is aligned with the user’s goal of exploring scenic stops, driving their engagement and decision-making processes.
44
+ - **Iterative Path Customization**: The use of real-time data and user feedback loops within the digital tool allows for dynamic and responsive journey customization, enhancing user satisfaction.
45
+ - **Experience Personalization**: Incorporates personalized preferences for scenic routes versus faster routes, illustrating user-centric design.
46
+
47
+ This walkthrough comprehensively captures how the digital mapping tool facilitates a meaningful user journey for road trippers focusing on scenic stops.
@@ -0,0 +1,53 @@
1
+ # 🧩 .brief.demo: `user journey` via `walkthrough`
2
+
3
+ ## πŸ’‘ Concept
4
+
5
+ A user journey is the path a user takes when interacting with a service or product to achieve a specific goal, mapped out to understand user experiences, touchpoints, and obstacles.
6
+
7
+ ## ❓ Question
8
+
9
+ > How can a user journey be demonstrated via a walkthrough?
10
+
11
+ ## πŸ“Œ Walkthrough: A Road Tripper Planning a Route with a Digital Map for Scenic Stops
12
+
13
+ ### πŸ“Œ.πŸ“– What
14
+
15
+ > What is the scenario?
16
+
17
+ - **Context**: A road tripper named Alex uses a digital map service to plan a route featuring scenic stops across the country.
18
+ - **Purpose**: To ensure the journey is enjoyable, with opportunities to experience nature, culture, and landmarks.
19
+ - **Tools**: A smartphone with a digital map application loaded with features like route planning, attraction highlights, and user reviews.
20
+
21
+ ### Key Steps in the Walkthrough:
22
+
23
+ 1. **Initial Planning**
24
+ - Alex opens the digital map application and inputs the destination city.
25
+ - The app displays multiple route options with estimated travel times and scenic ratings.
26
+
27
+ 2. **Route Selection**
28
+ - Alex selects a route optimized for scenic beauty, as indicated by user reviews and attraction icons along the map.
29
+ - The chosen route includes highlights like National Parks, quaint towns, and roadside attractions.
30
+
31
+ 3. **Customization**
32
+ - Alex uses the "Add Stops" feature to integrate recommended scenic viewpoints and rest areas into the trip.
33
+ - The map recalculates the journey with these additional waypoints, showing updated travel times.
34
+
35
+ 4. **Live Navigation**
36
+ - During the trip, Alex uses turn-by-turn navigation, which provides audio cues for upcoming attractions.
37
+ - Real-time traffic updates and road conditions adjust the route dynamically to avoid delays.
38
+
39
+ 5. **Feedback and Reflection**
40
+ - Post-trip, Alex uses the app to rate the attractions and route experience, contributing to the community insights.
41
+ - The app prompts Alex to save the trip as a future reference or share with other users planning similar journeys.
42
+
43
+ ### πŸ“Œ.πŸ” How
44
+
45
+ > How does this walkthrough demonstrate a user journey?
46
+
47
+ - **Engagement with Technology**: Highlights interaction with the app's features to plan and execute an enriching journey.
48
+ - **User-Centric Design**: Shows how the app assists in optimizing the journey, suggesting alternatives and customizations tailored to user preferences.
49
+ - **Experience Enrichment**: Demonstrates how digital tools enhance the journey by integrating real-time data and community feedback.
50
+ - **Journey Mapping**: Captures the essence of a user journey by following Alex's experiences from planning to execution, reflecting the stages of exploration, decision-making, and reflection.
51
+ - **Feedback Loop**: Illustrates the app's role in creating a seamless experience while encouraging continuous improvement through user insights.
52
+
53
+ This walkthrough encapsulates the user journey of leveraging technology for enhanced trip experiences, reflecting the interplay between user actions, technology, and feedback mechanisms.
@@ -0,0 +1,3 @@
1
+ purpose = explain a concept, via demonstration
2
+
3
+ produces .brief.demo's which can be used to provision context
@@ -119,7 +119,7 @@ exports.SKILL_DEMONSTRATE = (0, rhachet_1.genRoleSkill)({
119
119
  lookup: {
120
120
  apiKeyOpenai: {
121
121
  source: 'process.env',
122
- envar: 'PREP_OPENAI_KEY',
122
+ envar: 'OPENAI_API_KEY',
123
123
  desc: 'the openai key to use',
124
124
  type: 'string',
125
125
  },