coaiajs 0.1.2 → 0.2.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 (169) hide show
  1. package/.claude/settings.local.json +16 -0
  2. package/README.md +2 -0
  3. package/articles/academic/NOTES.md +1 -0
  4. package/articles/academic/README.md +1 -0
  5. package/articles/academic/creative-orientation-vs-problem-solving.md +177 -0
  6. package/articles/academic/jsonl-knowledge-graphs-agent-memory.md +142 -0
  7. package/articles/academic/langfuse-observability-llm-pipelines.md +144 -0
  8. package/articles/academic/medicine-wheel-software-architecture.md +163 -0
  9. package/articles/academic/mmot-autonomous-agents.md +156 -0
  10. package/articles/academic/model-context-protocol-interagent.md +161 -0
  11. package/articles/academic/pde-prompt-decomposition.md +186 -0
  12. package/articles/academic/structural-tension-in-ai-agents.md +134 -0
  13. package/articles/reviews/mcp-protocol-design-review.md +170 -0
  14. package/articles/reviews/observability-ai-systems-review.md +176 -0
  15. package/articles/reviews/prompt-engineering-decomposition-review.md +184 -0
  16. package/articles/surveys/agent-orchestration-survey.md +186 -0
  17. package/articles/surveys/knowledge-graph-storage-survey.md +204 -0
  18. package/articles/surveys/structural-tension-methodology-survey.md +154 -0
  19. package/articles/technical/aws-sdk-v3-polly.md +270 -0
  20. package/articles/technical/commander-cli-framework.md +262 -0
  21. package/articles/technical/dotenv-config-patterns.md +360 -0
  22. package/articles/technical/ioredis-vs-redis.md +142 -0
  23. package/articles/technical/langfuse-js-sdk-vs-rest.md +191 -0
  24. package/articles/technical/mcp-sdk-typescript.md +291 -0
  25. package/articles/technical/octokit-github-api.md +293 -0
  26. package/articles/technical/openai-sdk-modern.md +231 -0
  27. package/articles/technical/yaml-parsing-node.md +266 -0
  28. package/articles/technical/zod-runtime-validation.md +212 -0
  29. package/dist/mcp/server.js +5 -3
  30. package/dist/mcp/tools/coaiapy-tools.js +1 -0
  31. package/dist/src/cli.js +41 -5
  32. package/dist/src/langfuse/index.d.ts +1 -1
  33. package/dist/src/langfuse/index.js +1 -1
  34. package/dist/src/langfuse/traces.d.ts +1 -0
  35. package/dist/src/langfuse/traces.js +24 -0
  36. package/dist/src/redis.d.ts +1 -1
  37. package/dist/src/redis.js +2 -2
  38. package/mcp/config.ts +225 -0
  39. package/mcp/prompts.ts +131 -0
  40. package/mcp/resources.ts +84 -0
  41. package/mcp/server.ts +518 -0
  42. package/mcp/tools/coaiapy-tools.ts +366 -0
  43. package/mcp/tools/index.ts +4 -0
  44. package/package.json +2 -67
  45. package/src/audio.ts +76 -0
  46. package/src/cli-helpers.ts +86 -0
  47. package/src/cli.ts +1260 -0
  48. package/src/config.ts +207 -0
  49. package/src/environment.ts +171 -0
  50. package/src/github.ts +143 -0
  51. package/src/index.ts +82 -0
  52. package/src/langfuse/client.ts +105 -0
  53. package/src/langfuse/comments.ts +52 -0
  54. package/src/langfuse/datasets.ts +178 -0
  55. package/src/langfuse/index.ts +33 -0
  56. package/src/langfuse/media.ts +193 -0
  57. package/src/langfuse/observations.ts +131 -0
  58. package/src/langfuse/prompts.ts +157 -0
  59. package/src/langfuse/scores.ts +456 -0
  60. package/src/langfuse/traces.ts +302 -0
  61. package/src/llm.ts +106 -0
  62. package/src/narrative/graph-manager.ts +1358 -0
  63. package/src/narrative/index.ts +188 -0
  64. package/src/narrative/markdown-export.ts +535 -0
  65. package/src/narrative/tool-definitions.ts +635 -0
  66. package/src/narrative/tool-handlers.ts +528 -0
  67. package/src/narrative/types.ts +9 -0
  68. package/src/narrative/validation.ts +179 -0
  69. package/src/pde/index.ts +34 -0
  70. package/src/pde/mcp-handlers.ts +359 -0
  71. package/src/pde/mcp-tools.ts +201 -0
  72. package/src/pde/session-manager.ts +248 -0
  73. package/src/pde/stc-mapper.ts +298 -0
  74. package/src/pipeline/index.ts +7 -0
  75. package/src/pipeline/template-engine.ts +398 -0
  76. package/src/planning/index.ts +32 -0
  77. package/src/planning/mcp-handlers.ts +369 -0
  78. package/src/planning/mcp-tools.ts +155 -0
  79. package/src/planning/plan-parser.ts +587 -0
  80. package/src/redis.ts +111 -0
  81. package/src/types.ts +281 -0
  82. package/test/config.test.mjs +93 -0
  83. package/tsconfig.json +26 -0
  84. package/dist/mcp/config.d.ts.map +0 -1
  85. package/dist/mcp/config.js.map +0 -1
  86. package/dist/mcp/prompts.d.ts.map +0 -1
  87. package/dist/mcp/prompts.js.map +0 -1
  88. package/dist/mcp/resources.d.ts.map +0 -1
  89. package/dist/mcp/resources.js.map +0 -1
  90. package/dist/mcp/server.d.ts.map +0 -1
  91. package/dist/mcp/server.js.map +0 -1
  92. package/dist/mcp/tools/coaiapy-tools.d.ts.map +0 -1
  93. package/dist/mcp/tools/coaiapy-tools.js.map +0 -1
  94. package/dist/mcp/tools/index.d.ts.map +0 -1
  95. package/dist/mcp/tools/index.js.map +0 -1
  96. package/dist/src/audio.d.ts.map +0 -1
  97. package/dist/src/audio.js.map +0 -1
  98. package/dist/src/cli-helpers.d.ts.map +0 -1
  99. package/dist/src/cli-helpers.js.map +0 -1
  100. package/dist/src/cli.d.ts.map +0 -1
  101. package/dist/src/cli.js.map +0 -1
  102. package/dist/src/config.d.ts.map +0 -1
  103. package/dist/src/config.js.map +0 -1
  104. package/dist/src/environment.d.ts.map +0 -1
  105. package/dist/src/environment.js.map +0 -1
  106. package/dist/src/github.d.ts.map +0 -1
  107. package/dist/src/github.js.map +0 -1
  108. package/dist/src/index.d.ts.map +0 -1
  109. package/dist/src/index.js.map +0 -1
  110. package/dist/src/langfuse/client.d.ts.map +0 -1
  111. package/dist/src/langfuse/client.js.map +0 -1
  112. package/dist/src/langfuse/comments.d.ts.map +0 -1
  113. package/dist/src/langfuse/comments.js.map +0 -1
  114. package/dist/src/langfuse/datasets.d.ts.map +0 -1
  115. package/dist/src/langfuse/datasets.js.map +0 -1
  116. package/dist/src/langfuse/index.d.ts.map +0 -1
  117. package/dist/src/langfuse/index.js.map +0 -1
  118. package/dist/src/langfuse/media.d.ts.map +0 -1
  119. package/dist/src/langfuse/media.js.map +0 -1
  120. package/dist/src/langfuse/observations.d.ts.map +0 -1
  121. package/dist/src/langfuse/observations.js.map +0 -1
  122. package/dist/src/langfuse/prompts.d.ts.map +0 -1
  123. package/dist/src/langfuse/prompts.js.map +0 -1
  124. package/dist/src/langfuse/scores.d.ts.map +0 -1
  125. package/dist/src/langfuse/scores.js.map +0 -1
  126. package/dist/src/langfuse/traces.d.ts.map +0 -1
  127. package/dist/src/langfuse/traces.js.map +0 -1
  128. package/dist/src/llm.d.ts.map +0 -1
  129. package/dist/src/llm.js.map +0 -1
  130. package/dist/src/narrative/graph-manager.d.ts.map +0 -1
  131. package/dist/src/narrative/graph-manager.js.map +0 -1
  132. package/dist/src/narrative/index.d.ts.map +0 -1
  133. package/dist/src/narrative/index.js.map +0 -1
  134. package/dist/src/narrative/markdown-export.d.ts.map +0 -1
  135. package/dist/src/narrative/markdown-export.js.map +0 -1
  136. package/dist/src/narrative/tool-definitions.d.ts.map +0 -1
  137. package/dist/src/narrative/tool-definitions.js.map +0 -1
  138. package/dist/src/narrative/tool-handlers.d.ts.map +0 -1
  139. package/dist/src/narrative/tool-handlers.js.map +0 -1
  140. package/dist/src/narrative/types.d.ts.map +0 -1
  141. package/dist/src/narrative/types.js.map +0 -1
  142. package/dist/src/narrative/validation.d.ts.map +0 -1
  143. package/dist/src/narrative/validation.js.map +0 -1
  144. package/dist/src/pde/index.d.ts.map +0 -1
  145. package/dist/src/pde/index.js.map +0 -1
  146. package/dist/src/pde/mcp-handlers.d.ts.map +0 -1
  147. package/dist/src/pde/mcp-handlers.js.map +0 -1
  148. package/dist/src/pde/mcp-tools.d.ts.map +0 -1
  149. package/dist/src/pde/mcp-tools.js.map +0 -1
  150. package/dist/src/pde/session-manager.d.ts.map +0 -1
  151. package/dist/src/pde/session-manager.js.map +0 -1
  152. package/dist/src/pde/stc-mapper.d.ts.map +0 -1
  153. package/dist/src/pde/stc-mapper.js.map +0 -1
  154. package/dist/src/pipeline/index.d.ts.map +0 -1
  155. package/dist/src/pipeline/index.js.map +0 -1
  156. package/dist/src/pipeline/template-engine.d.ts.map +0 -1
  157. package/dist/src/pipeline/template-engine.js.map +0 -1
  158. package/dist/src/planning/index.d.ts.map +0 -1
  159. package/dist/src/planning/index.js.map +0 -1
  160. package/dist/src/planning/mcp-handlers.d.ts.map +0 -1
  161. package/dist/src/planning/mcp-handlers.js.map +0 -1
  162. package/dist/src/planning/mcp-tools.d.ts.map +0 -1
  163. package/dist/src/planning/mcp-tools.js.map +0 -1
  164. package/dist/src/planning/plan-parser.d.ts.map +0 -1
  165. package/dist/src/planning/plan-parser.js.map +0 -1
  166. package/dist/src/redis.d.ts.map +0 -1
  167. package/dist/src/redis.js.map +0 -1
  168. package/dist/src/types.d.ts.map +0 -1
  169. package/dist/src/types.js.map +0 -1
@@ -0,0 +1,188 @@
1
+ // narrative/index.ts — Module barrel export
2
+
3
+ export { KnowledgeGraphManager } from './graph-manager.js';
4
+ export { handleToolCall } from './tool-handlers.js';
5
+ export { validate, ValidationSchemas } from './validation.js';
6
+ export {
7
+ ALL_TOOL_DEFINITIONS,
8
+ STC_TOOLS,
9
+ NARRATIVE_TOOLS,
10
+ KG_TOOLS,
11
+ CORE_TOOLS,
12
+ } from './tool-definitions.js';
13
+ export type { ToolDefinition } from './tool-definitions.js';
14
+ export {
15
+ exportChartToMarkdown,
16
+ exportAllCharts as exportAllChartsToMarkdown,
17
+ exportChartProgress,
18
+ exportChartStats,
19
+ writeMarkdownToFile,
20
+ getDefaultFilename,
21
+ } from './markdown-export.js';
22
+ export type { MarkdownOptions } from './markdown-export.js';
23
+
24
+ // Re-export narrative-relevant types
25
+ export type {
26
+ Entity,
27
+ EntityMetadata,
28
+ Relation,
29
+ RelationMetadata,
30
+ KnowledgeGraph,
31
+ McpToolResult,
32
+ } from './types.js';
33
+
34
+ import { writeFileSync } from 'node:fs';
35
+ import { resolve } from 'node:path';
36
+ import { KnowledgeGraphManager } from './graph-manager.js';
37
+ import { handleToolCall } from './tool-handlers.js';
38
+ import {
39
+ exportChartToMarkdown as exportChartMarkdown,
40
+ exportAllCharts as exportAllChartsMarkdown,
41
+ exportChartProgress,
42
+ exportChartStats,
43
+ } from './markdown-export.js';
44
+ import { createEnvironment } from '../environment.js';
45
+ import type { McpToolResult } from '../types.js';
46
+
47
+ interface CliGlobals {
48
+ memoryPath?: string;
49
+ }
50
+
51
+ function managerFrom(opts?: CliGlobals): KnowledgeGraphManager {
52
+ return new KnowledgeGraphManager(
53
+ opts?.memoryPath ?? process.env['COAIAJS_MEMORY_PATH'] ?? 'coaia-memory.jsonl',
54
+ );
55
+ }
56
+
57
+ function firstText(result: McpToolResult): string {
58
+ return result.content[0]?.text ?? '';
59
+ }
60
+
61
+ export async function listCharts(opts?: CliGlobals): Promise<string> {
62
+ return firstText(await handleToolCall('list_active_charts', {}, managerFrom(opts)));
63
+ }
64
+
65
+ export async function viewChart(chartId: string, opts?: CliGlobals): Promise<string> {
66
+ return firstText(await handleToolCall('get_chart', { chartId }, managerFrom(opts)));
67
+ }
68
+
69
+ export async function setCurrentChart(chartId: string): Promise<void> {
70
+ const env = createEnvironment();
71
+ env.set('COAIA_CURRENT_CHART_ID', chartId);
72
+ env.save();
73
+ }
74
+
75
+ export function getCurrentChart(): string | undefined {
76
+ return createEnvironment().get('COAIA_CURRENT_CHART_ID');
77
+ }
78
+
79
+ export async function updateChart(
80
+ chartId: string,
81
+ opts: { desiredOutcome?: string; currentReality?: string },
82
+ ): Promise<string[]> {
83
+ const manager = managerFrom();
84
+ const results: string[] = [];
85
+ if (opts.desiredOutcome) {
86
+ results.push(firstText(await handleToolCall(
87
+ 'update_desired_outcome',
88
+ { chartId, newDesiredOutcome: opts.desiredOutcome },
89
+ manager,
90
+ )));
91
+ }
92
+ if (opts.currentReality) {
93
+ results.push(firstText(await handleToolCall(
94
+ 'update_current_reality',
95
+ { chartId, newObservations: [opts.currentReality] },
96
+ manager,
97
+ )));
98
+ }
99
+ if (results.length === 0) throw new Error('Provide --desired-outcome or --current-reality');
100
+ return results;
101
+ }
102
+
103
+ export async function addAction(
104
+ chartId: string,
105
+ opts: { title?: string; currentReality?: string; due?: string },
106
+ ): Promise<string> {
107
+ if (!opts.title) throw new Error('--title is required');
108
+ if (!opts.currentReality) throw new Error('--current-reality is required');
109
+ return firstText(await handleToolCall(
110
+ 'add_action_step',
111
+ {
112
+ parentChartId: chartId,
113
+ actionStepTitle: opts.title,
114
+ currentReality: opts.currentReality,
115
+ dueDate: opts.due,
116
+ },
117
+ managerFrom(),
118
+ ));
119
+ }
120
+
121
+ export async function addObservation(chartId: string, observation: string): Promise<string> {
122
+ return firstText(await handleToolCall(
123
+ 'update_current_reality',
124
+ { chartId, newObservations: [observation] },
125
+ managerFrom(),
126
+ ));
127
+ }
128
+
129
+ export async function completeAction(actionName: string): Promise<string> {
130
+ return firstText(await handleToolCall(
131
+ 'mark_action_complete',
132
+ { actionStepName: actionName },
133
+ managerFrom(),
134
+ ));
135
+ }
136
+
137
+ export async function exportChart(chartId: string): Promise<string> {
138
+ return exportChartMarkdown(chartId, managerFrom());
139
+ }
140
+
141
+ export async function exportAllCharts(opts: { output?: string } = {}): Promise<string | { output: string }> {
142
+ const markdown = await exportAllChartsMarkdown(managerFrom());
143
+ if (opts.output) {
144
+ const outPath = resolve(opts.output);
145
+ writeFileSync(outPath, markdown, 'utf-8');
146
+ return { output: outPath };
147
+ }
148
+ return markdown;
149
+ }
150
+
151
+ export async function getStats(): Promise<string> {
152
+ return exportChartStats(managerFrom());
153
+ }
154
+
155
+ export async function getProgress(chartId: string): Promise<string> {
156
+ return exportChartProgress(chartId, managerFrom());
157
+ }
158
+
159
+ export async function performMmot(
160
+ chartId: string,
161
+ opts: { assessment?: string; direction?: string },
162
+ ): Promise<string> {
163
+ return firstText(await handleToolCall(
164
+ 'perform_mmot_evaluation',
165
+ {
166
+ chartId,
167
+ assessment: opts.assessment,
168
+ direction: opts.direction,
169
+ },
170
+ managerFrom(),
171
+ ));
172
+ }
173
+
174
+ export async function setDueDate(chartId: string, date: string): Promise<string> {
175
+ const graph = await managerFrom().readGraph();
176
+ const chart = graph.entities.find(
177
+ (entity) => entity.entityType === 'structural_tension_chart' && entity.metadata?.chartId === chartId,
178
+ );
179
+ if (!chart) throw new Error(`Chart not found: ${chartId}`);
180
+ chart.metadata = { ...chart.metadata, dueDate: date, updatedAt: new Date().toISOString() };
181
+ const entities = graph.entities.map((entity) => entity.name === chart.name ? chart : entity);
182
+ const lines = [
183
+ ...entities.map((entity) => JSON.stringify({ type: 'entity', ...entity })),
184
+ ...graph.relations.map((relation) => JSON.stringify({ type: 'relation', ...relation })),
185
+ ];
186
+ writeFileSync(process.env['COAIAJS_MEMORY_PATH'] ?? 'coaia-memory.jsonl', lines.join('\n'), 'utf-8');
187
+ return `Due date set for ${chartId}`;
188
+ }