@avocadostudio-ai/orchestrator-core 0.1.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 (196) hide show
  1. package/LICENSE +201 -0
  2. package/dist/agent/agent-context.d.ts +19 -0
  3. package/dist/agent/agent-context.js +67 -0
  4. package/dist/agent/agent-logger.d.ts +5 -0
  5. package/dist/agent/agent-logger.js +22 -0
  6. package/dist/agent/agent-loop-openai.d.ts +8 -0
  7. package/dist/agent/agent-loop-openai.js +172 -0
  8. package/dist/agent/agent-loop.d.ts +56 -0
  9. package/dist/agent/agent-loop.js +167 -0
  10. package/dist/agent/agent-provider.d.ts +28 -0
  11. package/dist/agent/agent-provider.js +63 -0
  12. package/dist/agent/agent-tools.d.ts +28 -0
  13. package/dist/agent/agent-tools.js +899 -0
  14. package/dist/agent/context/editing-guidelines.md +46 -0
  15. package/dist/agent/context/role.md +39 -0
  16. package/dist/agent/integration-prompt.d.ts +9 -0
  17. package/dist/agent/integration-prompt.js +154 -0
  18. package/dist/agent/sites-agent-context.d.ts +12 -0
  19. package/dist/agent/sites-agent-context.js +316 -0
  20. package/dist/agent/sites-agent-shared.d.ts +161 -0
  21. package/dist/agent/sites-agent-shared.js +1101 -0
  22. package/dist/agent/sites-agent-tools.d.ts +18 -0
  23. package/dist/agent/sites-agent-tools.js +1227 -0
  24. package/dist/chat/anthropic-cache.d.ts +20 -0
  25. package/dist/chat/anthropic-cache.js +54 -0
  26. package/dist/chat/anthropic-planner.d.ts +98 -0
  27. package/dist/chat/anthropic-planner.js +1012 -0
  28. package/dist/chat/changelog-coverage-validator.d.ts +37 -0
  29. package/dist/chat/changelog-coverage-validator.js +215 -0
  30. package/dist/chat/chat-pipeline-context.d.ts +211 -0
  31. package/dist/chat/chat-pipeline-context.js +249 -0
  32. package/dist/chat/chat-pipeline-deterministic.d.ts +61 -0
  33. package/dist/chat/chat-pipeline-deterministic.js +407 -0
  34. package/dist/chat/chat-pipeline-image.d.ts +86 -0
  35. package/dist/chat/chat-pipeline-image.js +897 -0
  36. package/dist/chat/chat-pipeline-shared.d.ts +69 -0
  37. package/dist/chat/chat-pipeline-shared.js +212 -0
  38. package/dist/chat/chat-pipeline-translation.d.ts +27 -0
  39. package/dist/chat/chat-pipeline-translation.js +417 -0
  40. package/dist/chat/chat-pipeline-ui.d.ts +14 -0
  41. package/dist/chat/chat-pipeline-ui.js +244 -0
  42. package/dist/chat/chat-pipeline.d.ts +99 -0
  43. package/dist/chat/chat-pipeline.js +3999 -0
  44. package/dist/chat/decomposer.d.ts +21 -0
  45. package/dist/chat/decomposer.js +65 -0
  46. package/dist/chat/gemini-planner.d.ts +70 -0
  47. package/dist/chat/gemini-planner.js +541 -0
  48. package/dist/chat/hallucination-validator.d.ts +36 -0
  49. package/dist/chat/hallucination-validator.js +110 -0
  50. package/dist/chat/locale-strings.d.ts +47 -0
  51. package/dist/chat/locale-strings.js +100 -0
  52. package/dist/chat/plan-json-schema.d.ts +133 -0
  53. package/dist/chat/plan-json-schema.js +112 -0
  54. package/dist/chat/planner-types.d.ts +120 -0
  55. package/dist/chat/planner-types.js +66 -0
  56. package/dist/chat/planner.d.ts +148 -0
  57. package/dist/chat/planner.js +1361 -0
  58. package/dist/chat/prompts.d.ts +67 -0
  59. package/dist/chat/prompts.js +356 -0
  60. package/dist/chat/provider-routing.d.ts +14 -0
  61. package/dist/chat/provider-routing.js +27 -0
  62. package/dist/chat/variation-pipeline.d.ts +135 -0
  63. package/dist/chat/variation-pipeline.js +837 -0
  64. package/dist/chat/vision-alt-generator.d.ts +35 -0
  65. package/dist/chat/vision-alt-generator.js +152 -0
  66. package/dist/cms/adapter.d.ts +62 -0
  67. package/dist/cms/adapter.js +1 -0
  68. package/dist/cms/bootstrap.d.ts +17 -0
  69. package/dist/cms/bootstrap.js +85 -0
  70. package/dist/cms/editor-api-adapter.d.ts +23 -0
  71. package/dist/cms/editor-api-adapter.js +71 -0
  72. package/dist/cms/index.d.ts +4 -0
  73. package/dist/cms/index.js +3 -0
  74. package/dist/cms/json-file-adapter.d.ts +11 -0
  75. package/dist/cms/json-file-adapter.js +62 -0
  76. package/dist/demo-mode.d.ts +59 -0
  77. package/dist/demo-mode.js +201 -0
  78. package/dist/errors.d.ts +67 -0
  79. package/dist/errors.js +129 -0
  80. package/dist/http/chat-stream-resumable.d.ts +108 -0
  81. package/dist/http/chat-stream-resumable.js +290 -0
  82. package/dist/http/chat-stream.d.ts +99 -0
  83. package/dist/http/chat-stream.js +92 -0
  84. package/dist/image/gdrive-client.d.ts +22 -0
  85. package/dist/image/gdrive-client.js +215 -0
  86. package/dist/image/image-helpers.d.ts +95 -0
  87. package/dist/image/image-helpers.js +488 -0
  88. package/dist/index.d.ts +1 -0
  89. package/dist/index.js +1 -0
  90. package/dist/jira/jira-approval.d.ts +22 -0
  91. package/dist/jira/jira-approval.js +51 -0
  92. package/dist/jira/jira-client.d.ts +44 -0
  93. package/dist/jira/jira-client.js +313 -0
  94. package/dist/jira/jira-poller.d.ts +46 -0
  95. package/dist/jira/jira-poller.js +184 -0
  96. package/dist/jira/jira-processor.d.ts +103 -0
  97. package/dist/jira/jira-processor.js +1085 -0
  98. package/dist/jira/jira-types.d.ts +117 -0
  99. package/dist/jira/jira-types.js +38 -0
  100. package/dist/logger.d.ts +12 -0
  101. package/dist/logger.js +28 -0
  102. package/dist/migration/mcp-server-stdio.d.ts +8 -0
  103. package/dist/migration/mcp-server-stdio.js +672 -0
  104. package/dist/migration/migration-prompt.d.ts +7 -0
  105. package/dist/migration/migration-prompt.js +197 -0
  106. package/dist/migration/migration-tools.d.ts +17 -0
  107. package/dist/migration/migration-tools.js +159 -0
  108. package/dist/migration/scrape-cache.d.ts +9 -0
  109. package/dist/migration/scrape-cache.js +19 -0
  110. package/dist/nlp/deterministic-planner-context.d.ts +141 -0
  111. package/dist/nlp/deterministic-planner-context.js +362 -0
  112. package/dist/nlp/deterministic-planner-pages.d.ts +26 -0
  113. package/dist/nlp/deterministic-planner-pages.js +170 -0
  114. package/dist/nlp/deterministic-planner-patches.d.ts +80 -0
  115. package/dist/nlp/deterministic-planner-patches.js +508 -0
  116. package/dist/nlp/deterministic-planner-refs.d.ts +33 -0
  117. package/dist/nlp/deterministic-planner-refs.js +164 -0
  118. package/dist/nlp/deterministic-planner-suggestions.d.ts +49 -0
  119. package/dist/nlp/deterministic-planner-suggestions.js +579 -0
  120. package/dist/nlp/deterministic-planner.d.ts +85 -0
  121. package/dist/nlp/deterministic-planner.js +1631 -0
  122. package/dist/nlp/intent-detection.d.ts +309 -0
  123. package/dist/nlp/intent-detection.js +730 -0
  124. package/dist/nlp/intent-helpers.d.ts +15 -0
  125. package/dist/nlp/intent-helpers.js +243 -0
  126. package/dist/nlp/intent-patterns.d.ts +40 -0
  127. package/dist/nlp/intent-patterns.js +223 -0
  128. package/dist/nlp/plan-normalizer.d.ts +41 -0
  129. package/dist/nlp/plan-normalizer.js +1537 -0
  130. package/dist/ops/destructive-action-gate.d.ts +44 -0
  131. package/dist/ops/destructive-action-gate.js +90 -0
  132. package/dist/ops/ops-engine.d.ts +151 -0
  133. package/dist/ops/ops-engine.js +1394 -0
  134. package/dist/publish/diff-engine.d.ts +18 -0
  135. package/dist/publish/diff-engine.js +305 -0
  136. package/dist/publish/publish-helpers.d.ts +87 -0
  137. package/dist/publish/publish-helpers.js +521 -0
  138. package/dist/publish/publish-target-registry.d.ts +7 -0
  139. package/dist/publish/publish-target-registry.js +61 -0
  140. package/dist/publish/publish-target.d.ts +81 -0
  141. package/dist/publish/publish-target.js +1 -0
  142. package/dist/publish/targets/deploy-hook.d.ts +13 -0
  143. package/dist/publish/targets/deploy-hook.js +123 -0
  144. package/dist/publish/targets/git.d.ts +13 -0
  145. package/dist/publish/targets/git.js +55 -0
  146. package/dist/publish/targets/site-contract.d.ts +19 -0
  147. package/dist/publish/targets/site-contract.js +124 -0
  148. package/dist/state/content-source.d.ts +17 -0
  149. package/dist/state/content-source.js +1 -0
  150. package/dist/state/in-memory-content-source.d.ts +27 -0
  151. package/dist/state/in-memory-content-source.js +51 -0
  152. package/dist/state/session-lock.d.ts +13 -0
  153. package/dist/state/session-lock.js +29 -0
  154. package/dist/state/session-state.d.ts +310 -0
  155. package/dist/state/session-state.js +1083 -0
  156. package/dist/state/sqlite-store-singleton.d.ts +31 -0
  157. package/dist/state/sqlite-store-singleton.js +170 -0
  158. package/dist/state/sqlite-store.d.ts +135 -0
  159. package/dist/state/sqlite-store.js +421 -0
  160. package/dist/telemetry/chat-telemetry.d.ts +105 -0
  161. package/dist/telemetry/chat-telemetry.js +247 -0
  162. package/dist/telemetry/eval-candidate-store.d.ts +50 -0
  163. package/dist/telemetry/eval-candidate-store.js +120 -0
  164. package/dist/telemetry/feedback-store.d.ts +34 -0
  165. package/dist/telemetry/feedback-store.js +76 -0
  166. package/dist/telemetry/jira-telemetry.d.ts +57 -0
  167. package/dist/telemetry/jira-telemetry.js +68 -0
  168. package/dist/telemetry/migration-telemetry.d.ts +35 -0
  169. package/dist/telemetry/migration-telemetry.js +40 -0
  170. package/dist/telemetry/usage.d.ts +24 -0
  171. package/dist/telemetry/usage.js +80 -0
  172. package/dist/tools/builtin-registrations.d.ts +12 -0
  173. package/dist/tools/builtin-registrations.js +33 -0
  174. package/dist/tools/builtins/gdrive-browse.d.ts +3 -0
  175. package/dist/tools/builtins/gdrive-browse.js +68 -0
  176. package/dist/tools/builtins/image-generate.d.ts +3 -0
  177. package/dist/tools/builtins/image-generate.js +211 -0
  178. package/dist/tools/builtins/unsplash-get-by-id.d.ts +23 -0
  179. package/dist/tools/builtins/unsplash-get-by-id.js +119 -0
  180. package/dist/tools/builtins/unsplash-search.d.ts +3 -0
  181. package/dist/tools/builtins/unsplash-search.js +74 -0
  182. package/dist/tools/executor.d.ts +23 -0
  183. package/dist/tools/executor.js +169 -0
  184. package/dist/tools/index.d.ts +5 -0
  185. package/dist/tools/index.js +5 -0
  186. package/dist/tools/registry.d.ts +21 -0
  187. package/dist/tools/registry.js +75 -0
  188. package/dist/tools/runtime.d.ts +27 -0
  189. package/dist/tools/runtime.js +48 -0
  190. package/dist/tools/schema-validator.d.ts +24 -0
  191. package/dist/tools/schema-validator.js +88 -0
  192. package/dist/tools/types.d.ts +86 -0
  193. package/dist/tools/types.js +1 -0
  194. package/dist/variation-images.d.ts +19 -0
  195. package/dist/variation-images.js +12 -0
  196. package/package.json +78 -0
@@ -0,0 +1,20 @@
1
+ import Anthropic from "@anthropic-ai/sdk";
2
+ export declare function anthropicPromptCacheControl(): Anthropic.CacheControlEphemeral | undefined;
3
+ export declare function anthropicSystemPromptWithCache(system: string): string | Anthropic.TextBlockParam[];
4
+ /**
5
+ * Wraps a {stable, dynamic} prompt split into Anthropic system content blocks
6
+ * with `cache_control` on the stable prefix only. The dynamic suffix (per-
7
+ * request flags like selected block, locale, conditional modes) is sent as a
8
+ * separate text block without `cache_control`, so changing it does not bust
9
+ * the cache on the stable prefix.
10
+ *
11
+ * When caching is disabled, returns a single joined string for backward compat.
12
+ */
13
+ export declare function anthropicSegmentedSystemPromptWithCache(segments: {
14
+ stable: string;
15
+ dynamic: string;
16
+ }): string | Anthropic.TextBlockParam[];
17
+ export declare function anthropicToolWithCache(tool: Anthropic.Messages.Tool): Anthropic.Messages.Tool;
18
+ export declare const ANTHROPIC_FINE_GRAINED_STREAM_HEADERS: {
19
+ "anthropic-beta": string;
20
+ };
@@ -0,0 +1,54 @@
1
+ const ENABLED_RE = /^(1|true|yes|on)$/i;
2
+ function promptCacheEnabled() {
3
+ return ENABLED_RE.test((process.env.ANTHROPIC_PROMPT_CACHE ?? "").trim());
4
+ }
5
+ function promptCacheTtl() {
6
+ const raw = (process.env.ANTHROPIC_PROMPT_CACHE_TTL ?? "").trim();
7
+ if (raw === "5m" || raw === "1h")
8
+ return raw;
9
+ return undefined;
10
+ }
11
+ export function anthropicPromptCacheControl() {
12
+ if (!promptCacheEnabled())
13
+ return undefined;
14
+ const ttl = promptCacheTtl();
15
+ return ttl ? { type: "ephemeral", ttl } : { type: "ephemeral" };
16
+ }
17
+ export function anthropicSystemPromptWithCache(system) {
18
+ const cacheControl = anthropicPromptCacheControl();
19
+ if (!cacheControl)
20
+ return system;
21
+ return [{ type: "text", text: system, cache_control: cacheControl }];
22
+ }
23
+ /**
24
+ * Wraps a {stable, dynamic} prompt split into Anthropic system content blocks
25
+ * with `cache_control` on the stable prefix only. The dynamic suffix (per-
26
+ * request flags like selected block, locale, conditional modes) is sent as a
27
+ * separate text block without `cache_control`, so changing it does not bust
28
+ * the cache on the stable prefix.
29
+ *
30
+ * When caching is disabled, returns a single joined string for backward compat.
31
+ */
32
+ export function anthropicSegmentedSystemPromptWithCache(segments) {
33
+ const dynamic = segments.dynamic.trim();
34
+ const cacheControl = anthropicPromptCacheControl();
35
+ if (!cacheControl) {
36
+ return dynamic ? `${segments.stable}\n\n${dynamic}` : segments.stable;
37
+ }
38
+ const blocks = [
39
+ { type: "text", text: segments.stable, cache_control: cacheControl }
40
+ ];
41
+ if (dynamic) {
42
+ blocks.push({ type: "text", text: dynamic });
43
+ }
44
+ return blocks;
45
+ }
46
+ export function anthropicToolWithCache(tool) {
47
+ const cacheControl = anthropicPromptCacheControl();
48
+ if (!cacheControl)
49
+ return tool;
50
+ return { ...tool, cache_control: cacheControl };
51
+ }
52
+ export const ANTHROPIC_FINE_GRAINED_STREAM_HEADERS = {
53
+ "anthropic-beta": "fine-grained-tool-streaming-2025-05-14"
54
+ };
@@ -0,0 +1,98 @@
1
+ import Anthropic from "@anthropic-ai/sdk";
2
+ import { type BlockManifest, type EditPlan, type Operation, type PageDoc } from "@avocadostudio-ai/shared";
3
+ import { type ParsedIntent, plannerContextPack } from "../nlp/deterministic-planner.ts";
4
+ import type { ThinkingEvent, PlannerEffort } from "./planner-types.ts";
5
+ import { type PlannerSchemaContextMeta } from "./planner.ts";
6
+ import { type TokenUsage } from "../telemetry/usage.ts";
7
+ import { type ToolRuntime } from "../tools/runtime.ts";
8
+ import type { ToolExecutionEvent } from "../tools/types.ts";
9
+ import { type DeferredNativeImageCall } from "./chat-pipeline-shared.ts";
10
+ export type { DeferredNativeImageCall };
11
+ /** Reset the singleton (useful for tests that swap API keys). */
12
+ export declare function resetAnthropicClient(): void;
13
+ export declare function parseIntentWithAnthropic(args: {
14
+ message: string;
15
+ slug: string;
16
+ currentPage: PageDoc;
17
+ activeBlockId?: string;
18
+ activeBlockType?: string;
19
+ activeEditablePath?: string;
20
+ model: string;
21
+ log?: {
22
+ warn: (obj: Record<string, unknown>, msg: string) => void;
23
+ };
24
+ }): Promise<ParsedIntent>;
25
+ export type PlannerAnthropicClient = {
26
+ messages: {
27
+ create: (args: unknown, options?: {
28
+ signal?: AbortSignal;
29
+ }) => Promise<Anthropic.Messages.Message>;
30
+ stream?: (args: unknown, options?: {
31
+ headers?: Record<string, string>;
32
+ signal?: AbortSignal;
33
+ }) => AsyncIterable<unknown> & {
34
+ finalMessage: () => Promise<unknown>;
35
+ };
36
+ };
37
+ };
38
+ export declare function generatePlanWithAnthropic(args: {
39
+ message: string;
40
+ slug: string;
41
+ currentPage: PageDoc;
42
+ contextPack: ReturnType<typeof plannerContextPack>;
43
+ model: string;
44
+ history?: Array<{
45
+ role: "user" | "assistant";
46
+ content: string;
47
+ }>;
48
+ feedback?: string;
49
+ onToken?: (token: string) => void;
50
+ onThinking?: (event: ThinkingEvent) => void;
51
+ onFieldDraft?: (draft: {
52
+ blockId: string;
53
+ editablePath: string;
54
+ value: string;
55
+ pageSlug?: string;
56
+ }) => void;
57
+ onPlannedOp?: (op: Operation, index: number) => void;
58
+ onSummaryChunk?: (text: string) => void;
59
+ onChangeLogEntry?: (entry: string) => void;
60
+ onToolExecution?: (event: ToolExecutionEvent) => void;
61
+ onStatusUpdate?: (message: string) => void;
62
+ onImageProgress?: (event: {
63
+ percent: number;
64
+ stage: string;
65
+ }) => void;
66
+ toolRuntime?: ToolRuntime;
67
+ toolCallContext?: {
68
+ siteId: string;
69
+ sessionId: string;
70
+ userId?: string;
71
+ traceId: string;
72
+ gdriveFolderId?: string;
73
+ };
74
+ client?: PlannerAnthropicClient;
75
+ siteContextBlock?: string | null;
76
+ log?: {
77
+ warn: (obj: Record<string, unknown>, msg: string) => void;
78
+ };
79
+ forceFullSchemaContracts?: boolean;
80
+ componentsManifest?: BlockManifest;
81
+ lightweight?: boolean;
82
+ signal?: AbortSignal;
83
+ locale?: string;
84
+ imageSourceChoiceOpen?: boolean;
85
+ /**
86
+ * When set, enables Anthropic adaptive thinking at the given effort level.
87
+ * Adaptive thinking + `output_config.effort` is the current API — the legacy
88
+ * `budget_tokens` shape is rejected (400) on Opus 4.8 / Sonnet 5.
89
+ */
90
+ thinking?: {
91
+ effort: PlannerEffort;
92
+ };
93
+ }): Promise<{
94
+ plan: EditPlan;
95
+ usage: TokenUsage;
96
+ schemaContext: PlannerSchemaContextMeta;
97
+ deferredNativeImageCalls?: DeferredNativeImageCall[];
98
+ }>;