lua-cli 3.14.1 → 3.15.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 (142) hide show
  1. package/dist/api/agent.api.service.d.ts +12 -0
  2. package/dist/api/agent.api.service.d.ts.map +1 -1
  3. package/dist/api/agent.api.service.js +13 -0
  4. package/dist/api/agent.api.service.js.map +1 -1
  5. package/dist/api/http.client.d.ts.map +1 -1
  6. package/dist/api/http.client.js +31 -4
  7. package/dist/api/http.client.js.map +1 -1
  8. package/dist/api/persona.api.service.d.ts +3 -2
  9. package/dist/api/persona.api.service.d.ts.map +1 -1
  10. package/dist/api/persona.api.service.js +1 -1
  11. package/dist/api/persona.api.service.js.map +1 -1
  12. package/dist/api/postprocessor.api.service.d.ts +3 -0
  13. package/dist/api/postprocessor.api.service.d.ts.map +1 -1
  14. package/dist/api/postprocessor.api.service.js.map +1 -1
  15. package/dist/api/preprocessor.api.service.d.ts +4 -0
  16. package/dist/api/preprocessor.api.service.d.ts.map +1 -1
  17. package/dist/api/preprocessor.api.service.js +1 -0
  18. package/dist/api/preprocessor.api.service.js.map +1 -1
  19. package/dist/api-exports.d.ts +2 -1
  20. package/dist/api-exports.d.ts.map +1 -1
  21. package/dist/api-exports.js.map +1 -1
  22. package/dist/cli/command-definitions.d.ts.map +1 -1
  23. package/dist/cli/command-definitions.js +10 -0
  24. package/dist/cli/command-definitions.js.map +1 -1
  25. package/dist/commands/chat.d.ts.map +1 -1
  26. package/dist/commands/chat.js.map +1 -1
  27. package/dist/commands/init.d.ts +6 -0
  28. package/dist/commands/init.d.ts.map +1 -1
  29. package/dist/commands/init.js +255 -2
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/persona.d.ts.map +1 -1
  32. package/dist/commands/persona.js +3 -2
  33. package/dist/commands/persona.js.map +1 -1
  34. package/dist/commands/production.d.ts.map +1 -1
  35. package/dist/commands/production.js +8 -2
  36. package/dist/commands/production.js.map +1 -1
  37. package/dist/commands/push.d.ts.map +1 -1
  38. package/dist/commands/push.js +7 -3
  39. package/dist/commands/push.js.map +1 -1
  40. package/dist/commands/sync.d.ts.map +1 -1
  41. package/dist/commands/sync.js +3 -2
  42. package/dist/commands/sync.js.map +1 -1
  43. package/dist/compiler/plugins/agent.plugin.d.ts.map +1 -1
  44. package/dist/compiler/plugins/agent.plugin.js +10 -5
  45. package/dist/compiler/plugins/agent.plugin.js.map +1 -1
  46. package/dist/compiler/plugins/postprocessor.plugin.d.ts.map +1 -1
  47. package/dist/compiler/plugins/postprocessor.plugin.js +8 -2
  48. package/dist/compiler/plugins/postprocessor.plugin.js.map +1 -1
  49. package/dist/compiler/plugins/preprocessor.plugin.d.ts.map +1 -1
  50. package/dist/compiler/plugins/preprocessor.plugin.js +6 -3
  51. package/dist/compiler/plugins/preprocessor.plugin.js.map +1 -1
  52. package/dist/compiler/plugins/skill.plugin.d.ts.map +1 -1
  53. package/dist/compiler/plugins/skill.plugin.js +6 -2
  54. package/dist/compiler/plugins/skill.plugin.js.map +1 -1
  55. package/dist/compiler/source-writer.d.ts +13 -8
  56. package/dist/compiler/source-writer.d.ts.map +1 -1
  57. package/dist/compiler/source-writer.js +24 -12
  58. package/dist/compiler/source-writer.js.map +1 -1
  59. package/dist/compiler/types.d.ts +11 -5
  60. package/dist/compiler/types.d.ts.map +1 -1
  61. package/dist/compiler/types.js.map +1 -1
  62. package/dist/compiler/utils/ast-helpers.d.ts +11 -0
  63. package/dist/compiler/utils/ast-helpers.d.ts.map +1 -1
  64. package/dist/compiler/utils/ast-helpers.js +27 -0
  65. package/dist/compiler/utils/ast-helpers.js.map +1 -1
  66. package/dist/errors/auth.error.d.ts +19 -1
  67. package/dist/errors/auth.error.d.ts.map +1 -1
  68. package/dist/errors/auth.error.js +4 -1
  69. package/dist/errors/auth.error.js.map +1 -1
  70. package/dist/interfaces/agent.d.ts +34 -4
  71. package/dist/interfaces/agent.d.ts.map +1 -1
  72. package/dist/interfaces/chat.d.ts +2 -1
  73. package/dist/interfaces/chat.d.ts.map +1 -1
  74. package/dist/interfaces/init.d.ts +3 -2
  75. package/dist/interfaces/init.d.ts.map +1 -1
  76. package/dist/interfaces/persona.d.ts +2 -1
  77. package/dist/interfaces/persona.d.ts.map +1 -1
  78. package/dist/interfaces/skills.d.ts +4 -3
  79. package/dist/interfaces/skills.d.ts.map +1 -1
  80. package/dist/primitives/agent.handler.d.ts +3 -3
  81. package/dist/primitives/agent.handler.d.ts.map +1 -1
  82. package/dist/primitives/agent.handler.js +15 -1
  83. package/dist/primitives/agent.handler.js.map +1 -1
  84. package/dist/primitives/postprocessor.handler.d.ts +5 -0
  85. package/dist/primitives/postprocessor.handler.d.ts.map +1 -1
  86. package/dist/primitives/postprocessor.handler.js +13 -0
  87. package/dist/primitives/postprocessor.handler.js.map +1 -1
  88. package/dist/primitives/preprocessor.handler.d.ts +2 -2
  89. package/dist/primitives/preprocessor.handler.d.ts.map +1 -1
  90. package/dist/primitives/preprocessor.handler.js +3 -2
  91. package/dist/primitives/preprocessor.handler.js.map +1 -1
  92. package/dist/primitives/skill.handler.d.ts.map +1 -1
  93. package/dist/primitives/skill.handler.js +8 -2
  94. package/dist/primitives/skill.handler.js.map +1 -1
  95. package/dist/services/auth.d.ts.map +1 -1
  96. package/dist/services/auth.js +4 -1
  97. package/dist/services/auth.js.map +1 -1
  98. package/dist/services/sandbox.service.d.ts +2 -1
  99. package/dist/services/sandbox.service.d.ts.map +1 -1
  100. package/dist/services/sandbox.service.js.map +1 -1
  101. package/dist/types/skill.d.ts +12 -3
  102. package/dist/types/skill.d.ts.map +1 -1
  103. package/dist/types/skill.js +17 -0
  104. package/dist/types/skill.js.map +1 -1
  105. package/dist/utils/artifact-loader.d.ts +2 -1
  106. package/dist/utils/artifact-loader.d.ts.map +1 -1
  107. package/dist/utils/artifact-loader.js.map +1 -1
  108. package/dist/utils/backup-helpers.d.ts.map +1 -1
  109. package/dist/utils/backup-helpers.js +12 -2
  110. package/dist/utils/backup-helpers.js.map +1 -1
  111. package/dist/utils/cli.d.ts.map +1 -1
  112. package/dist/utils/cli.js +34 -1
  113. package/dist/utils/cli.js.map +1 -1
  114. package/dist/utils/init-agent.d.ts +2 -1
  115. package/dist/utils/init-agent.d.ts.map +1 -1
  116. package/dist/utils/init-agent.js.map +1 -1
  117. package/dist/utils/init-helpers.d.ts +2 -1
  118. package/dist/utils/init-helpers.d.ts.map +1 -1
  119. package/dist/utils/init-helpers.js +3 -1
  120. package/dist/utils/init-helpers.js.map +1 -1
  121. package/dist/utils/init-prompts.d.ts +20 -1
  122. package/dist/utils/init-prompts.d.ts.map +1 -1
  123. package/dist/utils/init-prompts.js +88 -0
  124. package/dist/utils/init-prompts.js.map +1 -1
  125. package/dist/utils/sync-display.d.ts +2 -1
  126. package/dist/utils/sync-display.d.ts.map +1 -1
  127. package/dist/utils/sync-display.js +5 -1
  128. package/dist/utils/sync-display.js.map +1 -1
  129. package/dist/utils/sync-fetch.d.ts +6 -4
  130. package/dist/utils/sync-fetch.d.ts.map +1 -1
  131. package/dist/utils/sync-fetch.js +31 -1
  132. package/dist/utils/sync-fetch.js.map +1 -1
  133. package/docs/api/LuaAgent.md +21 -3
  134. package/docs/api/LuaSkill.md +22 -4
  135. package/node_modules/@lua/shared-types/dist/index.d.mts +57 -1
  136. package/node_modules/@lua/shared-types/dist/index.d.ts +57 -1
  137. package/node_modules/@lua/shared-types/dist/index.js +65 -2
  138. package/node_modules/@lua/shared-types/dist/index.mjs +59 -1
  139. package/node_modules/@lua/shared-types/src/index.ts +1 -0
  140. package/node_modules/@lua/shared-types/src/persona-text.type.ts +92 -0
  141. package/package.json +1 -1
  142. package/template/package.json +1 -1
@@ -23,10 +23,40 @@ function normalizeForComparison(str) {
23
23
  .replace(/\r\n/g, '\n')
24
24
  .replace(/\r/g, '\n');
25
25
  }
26
+ function canonicalizeForm(value) {
27
+ if (value === null)
28
+ return 'null';
29
+ // Normalize strings the same way on both branches so the canonical form
30
+ // stays internally consistent — a server string with CRLF endings vs. a
31
+ // local string with LF endings should canonicalize identically.
32
+ if (typeof value === 'string')
33
+ return normalizeForComparison(value);
34
+ const keys = Object.keys(value).sort();
35
+ return JSON.stringify(keys.reduce((obj, key) => {
36
+ const k = key;
37
+ obj[k] = typeof value[k] === 'string' ? normalizeForComparison(value[k]) : value[k];
38
+ return obj;
39
+ }, {}));
40
+ }
26
41
  export function comparePersona(serverPersona, localPersona) {
27
42
  if (serverPersona === null)
28
43
  return false;
29
- return normalizeForComparison(serverPersona) !== normalizeForComparison(localPersona);
44
+ const serverCanonical = canonicalizeForm(serverPersona);
45
+ const localCanonical = canonicalizeForm(localPersona);
46
+ if (typeof serverPersona === 'string' && typeof localPersona === 'string') {
47
+ return normalizeForComparison(serverPersona) !== normalizeForComparison(localPersona);
48
+ }
49
+ return serverCanonical !== localCanonical;
50
+ }
51
+ export function compareSkillContext(serverContext, localContext) {
52
+ if (serverContext === null)
53
+ return false;
54
+ const serverCanonical = canonicalizeForm(serverContext);
55
+ const localCanonical = canonicalizeForm(localContext);
56
+ if (typeof serverContext === 'string' && typeof localContext === 'string') {
57
+ return normalizeForComparison(serverContext) !== normalizeForComparison(localContext);
58
+ }
59
+ return serverCanonical !== localCanonical;
30
60
  }
31
61
  export async function fetchServerPersona(apiKey, agentId) {
32
62
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"sync-fetch.js","sourceRoot":"","sources":["../../src/utils/sync-fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-fetch.js","sourceRoot":"","sources":["../../src/utils/sync-fetch.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ interface LuaAgentConfig {
24
24
  name: string;
25
25
 
26
26
  /** Agent persona - defines behavior and personality */
27
- persona: string;
27
+ persona: string | { base?: string; voice?: string; text?: string };
28
28
 
29
29
  /** AI model to use - static string or dynamic resolver function (v3.6.0+) */
30
30
  model?: string | ((request: LuaRequest) => string | Promise<string>);
@@ -58,8 +58,8 @@ class LuaAgent {
58
58
  - **Example:** `'customer-support-agent'`, `'sales-assistant'`
59
59
 
60
60
  ### `persona` (required)
61
- - **Type:** `string`
62
- - **Description:** Defines the agent's personality, behavior, tone, and capabilities
61
+ - **Type:** `string | { base?: string; voice?: string; text?: string }`
62
+ - **Description:** Defines the agent's personality, behavior, tone, and capabilities. Can be a simple string (applies everywhere) or an object with channel-specific instructions.
63
63
  - **Should Include:**
64
64
  - Who the agent is
65
65
  - What role they play
@@ -67,6 +67,24 @@ class LuaAgent {
67
67
  - What they can and cannot do
68
68
  - Any specific behaviors or rules
69
69
 
70
+ **Channel-aware persona (advanced):** You can pass an object with `base`, `voice`, and `text` keys to give the agent different instructions on different channels. `base` is always rendered. `voice` is appended on voice calls; `text` is appended on text channels (web, WhatsApp, SMS). Both are optional. By default a single string works on every channel — only reach for the object form when you have a measurably different persona need on voice vs text.
71
+
72
+ **Examples:**
73
+
74
+ Simple string (applies everywhere):
75
+ ```typescript
76
+ persona: 'You are a friendly customer support agent. Be patient and professional.'
77
+ ```
78
+
79
+ Channel-aware object (recommended for multi-channel agents):
80
+ ```typescript
81
+ persona: {
82
+ base: 'You are a helpful customer support agent.',
83
+ voice: 'Keep responses concise and conversational for voice calls.',
84
+ text: 'You can use longer explanations and formatting in text channels.'
85
+ }
86
+ ```
87
+
70
88
  ### `model` (optional, v3.6.0+)
71
89
  - **Type:** `string | ((request: LuaRequest) => string | Promise<string>)`
72
90
  - **Description:** AI model to use for this agent. Can be a static string (`'provider/model'`) or a resolver function that dynamically selects the model per request.
@@ -30,7 +30,7 @@ interface LuaSkillConfig {
30
30
  description: string;
31
31
 
32
32
  /** Detailed context for when to use these tools */
33
- context: string;
33
+ context: string | { base?: string; voice?: string; text?: string };
34
34
 
35
35
  /** Array of tools to include */
36
36
  tools?: LuaTool[];
@@ -51,9 +51,27 @@ interface LuaSkillConfig {
51
51
  - **Best Practice:** 1-2 sentences, clear and concise
52
52
 
53
53
  ### `context` (required)
54
- - **Type:** `string`
55
- - **Description:** Detailed guidance for the AI on when/how to use these tools
56
- - **Best Practice:** Include use cases, examples, and boundaries
54
+ - **Type:** `string | { base?: string; voice?: string; text?: string }`
55
+ - **Description:** Detailed guidance for the AI on when/how to use these tools. Can be a simple string (applies everywhere) or an object with channel-specific instructions.
56
+ - **Best Practice:** Include use cases, examples, and boundaries. Start with a simple string; only use the object form if you need different tool guidance on voice vs text.
57
+
58
+ **Channel-aware context (advanced):** You can pass an object with `base`, `voice`, and `text` keys to guide tool usage differently by channel. `base` is always rendered. `voice` is appended on voice calls; `text` is appended on text channels (web, WhatsApp, SMS). Both are optional.
59
+
60
+ **Examples:**
61
+
62
+ Simple string (applies everywhere):
63
+ ```typescript
64
+ context: 'Use these payment tools to help customers complete transactions. Always confirm amounts before processing.'
65
+ ```
66
+
67
+ Channel-aware object (for channel-specific tool guidance):
68
+ ```typescript
69
+ context: {
70
+ base: 'Use these payment tools to help customers complete transactions.',
71
+ voice: 'Keep payment guidance brief and conversational. Ask verbally to confirm amounts.',
72
+ text: 'Provide detailed payment instructions with step-by-step guidance. Display amounts clearly.'
73
+ }
74
+ ```
57
75
 
58
76
  ### `tools` (optional)
59
77
  - **Type:** `LuaTool[]`
@@ -7,6 +7,62 @@ import { FinishReason, LanguageModelUsage, ReasoningOutput, CallWarning, UserCon
7
7
  */
8
8
  type Channel = 'web' | 'meeting' | 'whatsapp' | 'facebook' | 'instagram' | 'slack' | 'teams' | 'messagebird' | 'front' | 'api' | 'dev' | 'email' | 'rcs' | 'sms' | 'mms' | 'device' | string;
9
9
 
10
+ /**
11
+ * Polymorphic shape used by `LuaAgent.persona`. String form is the legacy
12
+ * single-channel persona; object form lets the customer split prose per
13
+ * channel (`base` always rendered; `voice` appended on voice; `text`
14
+ * appended on text channels).
15
+ */
16
+ type PersonaText = string | {
17
+ base?: string;
18
+ voice?: string;
19
+ text?: string;
20
+ };
21
+ /**
22
+ * Same shape as `PersonaText`, exported separately because skill `context`
23
+ * and agent `persona` play different semantic roles. Sharing the structural
24
+ * shape today keeps the runtime lean; future divergence is a one-line change.
25
+ */
26
+ type SkillContextText = string | {
27
+ base?: string;
28
+ voice?: string;
29
+ text?: string;
30
+ };
31
+ declare function isPersonaTextObject(value: unknown): value is {
32
+ base?: string;
33
+ voice?: string;
34
+ text?: string;
35
+ };
36
+ /**
37
+ * Flatten `PersonaText` or `SkillContextText` to a plain string suitable for
38
+ * LLM prompt injection. `base` is always emitted; `voice` is appended on
39
+ * voice channels and `text` on text channels. Strict — missing channel keys
40
+ * render nothing (no cross-channel fallback).
41
+ */
42
+ declare function flattenPersonaText(input: PersonaText | SkillContextText | null | undefined, isVoice?: boolean): string;
43
+ /**
44
+ * Channel-agnostic flatten — concatenates every non-empty channel's content
45
+ * (base + voice + text) for paths that aren't a render-time prompt injection,
46
+ * e.g. AI persona enhancement (storytelling, instructions, website-derived).
47
+ * Use this whenever the call has no channel context but still wants the full
48
+ * persona content — `flattenPersonaText` would silently drop voice or text
49
+ * branches because it defaults to text-channel rendering.
50
+ */
51
+ declare function flattenPersonaTextAll(input: PersonaText | SkillContextText | null | undefined): string;
52
+ /**
53
+ * True when the persona has ANY non-empty content on any channel. Used at
54
+ * push/skip boundaries where channel context is not yet known.
55
+ */
56
+ declare function hasPersonaTextContent(input: PersonaText | SkillContextText | null | undefined): boolean;
57
+ /**
58
+ * Convert a PersonaText into a TypeScript source-code literal suitable
59
+ * for ts-morph setInitializer or template rendering.
60
+ *
61
+ * - String form → `"..."` (double-quoted) or template literal (when newlines present)
62
+ * - Object form → `{ base: ..., voice: ..., text: ... }` with same per-key rule
63
+ */
64
+ declare function personaToLiteral(persona: PersonaText): string;
65
+
10
66
  /**
11
67
  * MIME types supported by Unstructured.io for document text extraction.
12
68
  * Source: https://docs.unstructured.io/api-reference/supported-file-types
@@ -470,4 +526,4 @@ interface ChatErrorChunk {
470
526
  timestamp: number;
471
527
  }
472
528
 
473
- export { AGENT_LOG_SOURCES, type AgentInvocationInput, type AgentInvocationOutput, type AgentLogMetadata, type AgentLogSource, type AiGenerateInput, type AiGenerateOutput, type AiGenerateSource, type AiGenerateToolCall, type AiGenerateToolResult, type ApprovedModelDef, type BatchingConfig, CLIENT_TOOLS_MAX, CLIENT_TOOL_PREFIX, type CachedDeviceCommand, type CachedDeviceDefinition, type CachedDeviceTrigger, type CachedDeviceTriggerDefinition, type Channel, type ChatErrorChunk, type ClientToolDef, type CommandHashData, type CommandState, type CommandStreamEntry, type DeviceCommandDefinition, type DeviceCommandMessage, type DeviceInfo, type DeviceResponseMessage, type DeviceStatus, type DeviceTriggerAckMessage, type DeviceTriggerMessage, type GovernanceConfig, REQUIRED_ENUMS, REQUIRED_NESTED_APIS, REQUIRED_PLATFORM_APIS, REQUIRED_PRIMITIVE_SHIMS, REQUIRED_UTILITIES, type ResponseStreamEntry, type TriggerStreamEntry, UNSTRUCTURED_SUPPORTED_MEDIA_TYPES, aiGenerateInputFromSimplified, buildDefaultPersona };
529
+ export { AGENT_LOG_SOURCES, type AgentInvocationInput, type AgentInvocationOutput, type AgentLogMetadata, type AgentLogSource, type AiGenerateInput, type AiGenerateOutput, type AiGenerateSource, type AiGenerateToolCall, type AiGenerateToolResult, type ApprovedModelDef, type BatchingConfig, CLIENT_TOOLS_MAX, CLIENT_TOOL_PREFIX, type CachedDeviceCommand, type CachedDeviceDefinition, type CachedDeviceTrigger, type CachedDeviceTriggerDefinition, type Channel, type ChatErrorChunk, type ClientToolDef, type CommandHashData, type CommandState, type CommandStreamEntry, type DeviceCommandDefinition, type DeviceCommandMessage, type DeviceInfo, type DeviceResponseMessage, type DeviceStatus, type DeviceTriggerAckMessage, type DeviceTriggerMessage, type GovernanceConfig, type PersonaText, REQUIRED_ENUMS, REQUIRED_NESTED_APIS, REQUIRED_PLATFORM_APIS, REQUIRED_PRIMITIVE_SHIMS, REQUIRED_UTILITIES, type ResponseStreamEntry, type SkillContextText, type TriggerStreamEntry, UNSTRUCTURED_SUPPORTED_MEDIA_TYPES, aiGenerateInputFromSimplified, buildDefaultPersona, flattenPersonaText, flattenPersonaTextAll, hasPersonaTextContent, isPersonaTextObject, personaToLiteral };
@@ -7,6 +7,62 @@ import { FinishReason, LanguageModelUsage, ReasoningOutput, CallWarning, UserCon
7
7
  */
8
8
  type Channel = 'web' | 'meeting' | 'whatsapp' | 'facebook' | 'instagram' | 'slack' | 'teams' | 'messagebird' | 'front' | 'api' | 'dev' | 'email' | 'rcs' | 'sms' | 'mms' | 'device' | string;
9
9
 
10
+ /**
11
+ * Polymorphic shape used by `LuaAgent.persona`. String form is the legacy
12
+ * single-channel persona; object form lets the customer split prose per
13
+ * channel (`base` always rendered; `voice` appended on voice; `text`
14
+ * appended on text channels).
15
+ */
16
+ type PersonaText = string | {
17
+ base?: string;
18
+ voice?: string;
19
+ text?: string;
20
+ };
21
+ /**
22
+ * Same shape as `PersonaText`, exported separately because skill `context`
23
+ * and agent `persona` play different semantic roles. Sharing the structural
24
+ * shape today keeps the runtime lean; future divergence is a one-line change.
25
+ */
26
+ type SkillContextText = string | {
27
+ base?: string;
28
+ voice?: string;
29
+ text?: string;
30
+ };
31
+ declare function isPersonaTextObject(value: unknown): value is {
32
+ base?: string;
33
+ voice?: string;
34
+ text?: string;
35
+ };
36
+ /**
37
+ * Flatten `PersonaText` or `SkillContextText` to a plain string suitable for
38
+ * LLM prompt injection. `base` is always emitted; `voice` is appended on
39
+ * voice channels and `text` on text channels. Strict — missing channel keys
40
+ * render nothing (no cross-channel fallback).
41
+ */
42
+ declare function flattenPersonaText(input: PersonaText | SkillContextText | null | undefined, isVoice?: boolean): string;
43
+ /**
44
+ * Channel-agnostic flatten — concatenates every non-empty channel's content
45
+ * (base + voice + text) for paths that aren't a render-time prompt injection,
46
+ * e.g. AI persona enhancement (storytelling, instructions, website-derived).
47
+ * Use this whenever the call has no channel context but still wants the full
48
+ * persona content — `flattenPersonaText` would silently drop voice or text
49
+ * branches because it defaults to text-channel rendering.
50
+ */
51
+ declare function flattenPersonaTextAll(input: PersonaText | SkillContextText | null | undefined): string;
52
+ /**
53
+ * True when the persona has ANY non-empty content on any channel. Used at
54
+ * push/skip boundaries where channel context is not yet known.
55
+ */
56
+ declare function hasPersonaTextContent(input: PersonaText | SkillContextText | null | undefined): boolean;
57
+ /**
58
+ * Convert a PersonaText into a TypeScript source-code literal suitable
59
+ * for ts-morph setInitializer or template rendering.
60
+ *
61
+ * - String form → `"..."` (double-quoted) or template literal (when newlines present)
62
+ * - Object form → `{ base: ..., voice: ..., text: ... }` with same per-key rule
63
+ */
64
+ declare function personaToLiteral(persona: PersonaText): string;
65
+
10
66
  /**
11
67
  * MIME types supported by Unstructured.io for document text extraction.
12
68
  * Source: https://docs.unstructured.io/api-reference/supported-file-types
@@ -470,4 +526,4 @@ interface ChatErrorChunk {
470
526
  timestamp: number;
471
527
  }
472
528
 
473
- export { AGENT_LOG_SOURCES, type AgentInvocationInput, type AgentInvocationOutput, type AgentLogMetadata, type AgentLogSource, type AiGenerateInput, type AiGenerateOutput, type AiGenerateSource, type AiGenerateToolCall, type AiGenerateToolResult, type ApprovedModelDef, type BatchingConfig, CLIENT_TOOLS_MAX, CLIENT_TOOL_PREFIX, type CachedDeviceCommand, type CachedDeviceDefinition, type CachedDeviceTrigger, type CachedDeviceTriggerDefinition, type Channel, type ChatErrorChunk, type ClientToolDef, type CommandHashData, type CommandState, type CommandStreamEntry, type DeviceCommandDefinition, type DeviceCommandMessage, type DeviceInfo, type DeviceResponseMessage, type DeviceStatus, type DeviceTriggerAckMessage, type DeviceTriggerMessage, type GovernanceConfig, REQUIRED_ENUMS, REQUIRED_NESTED_APIS, REQUIRED_PLATFORM_APIS, REQUIRED_PRIMITIVE_SHIMS, REQUIRED_UTILITIES, type ResponseStreamEntry, type TriggerStreamEntry, UNSTRUCTURED_SUPPORTED_MEDIA_TYPES, aiGenerateInputFromSimplified, buildDefaultPersona };
529
+ export { AGENT_LOG_SOURCES, type AgentInvocationInput, type AgentInvocationOutput, type AgentLogMetadata, type AgentLogSource, type AiGenerateInput, type AiGenerateOutput, type AiGenerateSource, type AiGenerateToolCall, type AiGenerateToolResult, type ApprovedModelDef, type BatchingConfig, CLIENT_TOOLS_MAX, CLIENT_TOOL_PREFIX, type CachedDeviceCommand, type CachedDeviceDefinition, type CachedDeviceTrigger, type CachedDeviceTriggerDefinition, type Channel, type ChatErrorChunk, type ClientToolDef, type CommandHashData, type CommandState, type CommandStreamEntry, type DeviceCommandDefinition, type DeviceCommandMessage, type DeviceInfo, type DeviceResponseMessage, type DeviceStatus, type DeviceTriggerAckMessage, type DeviceTriggerMessage, type GovernanceConfig, type PersonaText, REQUIRED_ENUMS, REQUIRED_NESTED_APIS, REQUIRED_PLATFORM_APIS, REQUIRED_PRIMITIVE_SHIMS, REQUIRED_UTILITIES, type ResponseStreamEntry, type SkillContextText, type TriggerStreamEntry, UNSTRUCTURED_SUPPORTED_MEDIA_TYPES, aiGenerateInputFromSimplified, buildDefaultPersona, flattenPersonaText, flattenPersonaTextAll, hasPersonaTextContent, isPersonaTextObject, personaToLiteral };
@@ -30,10 +30,68 @@ __export(index_exports, {
30
30
  REQUIRED_UTILITIES: () => REQUIRED_UTILITIES,
31
31
  UNSTRUCTURED_SUPPORTED_MEDIA_TYPES: () => UNSTRUCTURED_SUPPORTED_MEDIA_TYPES,
32
32
  aiGenerateInputFromSimplified: () => aiGenerateInputFromSimplified,
33
- buildDefaultPersona: () => buildDefaultPersona
33
+ buildDefaultPersona: () => buildDefaultPersona,
34
+ flattenPersonaText: () => flattenPersonaText,
35
+ flattenPersonaTextAll: () => flattenPersonaTextAll,
36
+ hasPersonaTextContent: () => hasPersonaTextContent,
37
+ isPersonaTextObject: () => isPersonaTextObject,
38
+ personaToLiteral: () => personaToLiteral
34
39
  });
35
40
  module.exports = __toCommonJS(index_exports);
36
41
 
42
+ // src/persona-text.type.ts
43
+ function isPersonaTextObject(value) {
44
+ if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
45
+ const obj = value;
46
+ for (const k of Object.keys(obj)) {
47
+ if (k !== "base" && k !== "voice" && k !== "text") return false;
48
+ if (obj[k] !== void 0 && typeof obj[k] !== "string") return false;
49
+ }
50
+ return true;
51
+ }
52
+ __name(isPersonaTextObject, "isPersonaTextObject");
53
+ function flattenPersonaText(input, isVoice = false) {
54
+ if (input == null) return "";
55
+ if (typeof input === "string") return input;
56
+ const parts = [];
57
+ if (input.base) parts.push(input.base);
58
+ const channelText = isVoice ? input.voice : input.text;
59
+ if (channelText) parts.push(channelText);
60
+ return parts.join("\n\n");
61
+ }
62
+ __name(flattenPersonaText, "flattenPersonaText");
63
+ function flattenPersonaTextAll(input) {
64
+ if (input == null) return "";
65
+ if (typeof input === "string") return input;
66
+ const parts = [];
67
+ if (input.base) parts.push(input.base);
68
+ if (input.voice) parts.push(input.voice);
69
+ if (input.text) parts.push(input.text);
70
+ return parts.join("\n\n");
71
+ }
72
+ __name(flattenPersonaTextAll, "flattenPersonaTextAll");
73
+ function hasPersonaTextContent(input) {
74
+ if (input == null) return false;
75
+ if (typeof input === "string") return input.trim().length > 0;
76
+ return Boolean(input.base?.trim() || input.voice?.trim() || input.text?.trim());
77
+ }
78
+ __name(hasPersonaTextContent, "hasPersonaTextContent");
79
+ function personaToLiteral(persona) {
80
+ const formatValue = /* @__PURE__ */ __name((v) => {
81
+ if (v.includes("\n")) {
82
+ return "`" + v.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$") + "`";
83
+ }
84
+ return '"' + v.replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '"';
85
+ }, "formatValue");
86
+ if (typeof persona === "string") return formatValue(persona);
87
+ const parts = [];
88
+ if (persona.base !== void 0) parts.push(`base: ${formatValue(persona.base)}`);
89
+ if (persona.voice !== void 0) parts.push(`voice: ${formatValue(persona.voice)}`);
90
+ if (persona.text !== void 0) parts.push(`text: ${formatValue(persona.text)}`);
91
+ return `{ ${parts.join(", ")} }`;
92
+ }
93
+ __name(personaToLiteral, "personaToLiteral");
94
+
37
95
  // src/unstructured-types.ts
38
96
  var UNSTRUCTURED_SUPPORTED_MEDIA_TYPES = /* @__PURE__ */ new Set([
39
97
  // PDF
@@ -296,5 +354,10 @@ var AGENT_LOG_SOURCES = [
296
354
  REQUIRED_UTILITIES,
297
355
  UNSTRUCTURED_SUPPORTED_MEDIA_TYPES,
298
356
  aiGenerateInputFromSimplified,
299
- buildDefaultPersona
357
+ buildDefaultPersona,
358
+ flattenPersonaText,
359
+ flattenPersonaTextAll,
360
+ hasPersonaTextContent,
361
+ isPersonaTextObject,
362
+ personaToLiteral
300
363
  });
@@ -1,6 +1,59 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
 
4
+ // src/persona-text.type.ts
5
+ function isPersonaTextObject(value) {
6
+ if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
7
+ const obj = value;
8
+ for (const k of Object.keys(obj)) {
9
+ if (k !== "base" && k !== "voice" && k !== "text") return false;
10
+ if (obj[k] !== void 0 && typeof obj[k] !== "string") return false;
11
+ }
12
+ return true;
13
+ }
14
+ __name(isPersonaTextObject, "isPersonaTextObject");
15
+ function flattenPersonaText(input, isVoice = false) {
16
+ if (input == null) return "";
17
+ if (typeof input === "string") return input;
18
+ const parts = [];
19
+ if (input.base) parts.push(input.base);
20
+ const channelText = isVoice ? input.voice : input.text;
21
+ if (channelText) parts.push(channelText);
22
+ return parts.join("\n\n");
23
+ }
24
+ __name(flattenPersonaText, "flattenPersonaText");
25
+ function flattenPersonaTextAll(input) {
26
+ if (input == null) return "";
27
+ if (typeof input === "string") return input;
28
+ const parts = [];
29
+ if (input.base) parts.push(input.base);
30
+ if (input.voice) parts.push(input.voice);
31
+ if (input.text) parts.push(input.text);
32
+ return parts.join("\n\n");
33
+ }
34
+ __name(flattenPersonaTextAll, "flattenPersonaTextAll");
35
+ function hasPersonaTextContent(input) {
36
+ if (input == null) return false;
37
+ if (typeof input === "string") return input.trim().length > 0;
38
+ return Boolean(input.base?.trim() || input.voice?.trim() || input.text?.trim());
39
+ }
40
+ __name(hasPersonaTextContent, "hasPersonaTextContent");
41
+ function personaToLiteral(persona) {
42
+ const formatValue = /* @__PURE__ */ __name((v) => {
43
+ if (v.includes("\n")) {
44
+ return "`" + v.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$") + "`";
45
+ }
46
+ return '"' + v.replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '"';
47
+ }, "formatValue");
48
+ if (typeof persona === "string") return formatValue(persona);
49
+ const parts = [];
50
+ if (persona.base !== void 0) parts.push(`base: ${formatValue(persona.base)}`);
51
+ if (persona.voice !== void 0) parts.push(`voice: ${formatValue(persona.voice)}`);
52
+ if (persona.text !== void 0) parts.push(`text: ${formatValue(persona.text)}`);
53
+ return `{ ${parts.join(", ")} }`;
54
+ }
55
+ __name(personaToLiteral, "personaToLiteral");
56
+
4
57
  // src/unstructured-types.ts
5
58
  var UNSTRUCTURED_SUPPORTED_MEDIA_TYPES = /* @__PURE__ */ new Set([
6
59
  // PDF
@@ -262,5 +315,10 @@ export {
262
315
  REQUIRED_UTILITIES,
263
316
  UNSTRUCTURED_SUPPORTED_MEDIA_TYPES,
264
317
  aiGenerateInputFromSimplified,
265
- buildDefaultPersona
318
+ buildDefaultPersona,
319
+ flattenPersonaText,
320
+ flattenPersonaTextAll,
321
+ hasPersonaTextContent,
322
+ isPersonaTextObject,
323
+ personaToLiteral
266
324
  };
@@ -1,4 +1,5 @@
1
1
  export * from './channel.type';
2
+ export * from './persona-text.type';
2
3
  export * from './unstructured-types';
3
4
  export * from './ai-generate.types';
4
5
  export * from './ai-generate.utils';
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Polymorphic shape used by `LuaAgent.persona`. String form is the legacy
3
+ * single-channel persona; object form lets the customer split prose per
4
+ * channel (`base` always rendered; `voice` appended on voice; `text`
5
+ * appended on text channels).
6
+ */
7
+ export type PersonaText = string | { base?: string; voice?: string; text?: string };
8
+
9
+ /**
10
+ * Same shape as `PersonaText`, exported separately because skill `context`
11
+ * and agent `persona` play different semantic roles. Sharing the structural
12
+ * shape today keeps the runtime lean; future divergence is a one-line change.
13
+ */
14
+ export type SkillContextText = string | { base?: string; voice?: string; text?: string };
15
+
16
+ export function isPersonaTextObject(value: unknown): value is { base?: string; voice?: string; text?: string } {
17
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) return false;
18
+ const obj = value as Record<string, unknown>;
19
+ for (const k of Object.keys(obj)) {
20
+ if (k !== 'base' && k !== 'voice' && k !== 'text') return false;
21
+ if (obj[k] !== undefined && typeof obj[k] !== 'string') return false;
22
+ }
23
+ return true;
24
+ }
25
+
26
+ /**
27
+ * Flatten `PersonaText` or `SkillContextText` to a plain string suitable for
28
+ * LLM prompt injection. `base` is always emitted; `voice` is appended on
29
+ * voice channels and `text` on text channels. Strict — missing channel keys
30
+ * render nothing (no cross-channel fallback).
31
+ */
32
+ export function flattenPersonaText(input: PersonaText | SkillContextText | null | undefined, isVoice = false): string {
33
+ if (input == null) return '';
34
+ if (typeof input === 'string') return input;
35
+ const parts: string[] = [];
36
+ if (input.base) parts.push(input.base);
37
+ const channelText = isVoice ? input.voice : input.text;
38
+ if (channelText) parts.push(channelText);
39
+ return parts.join('\n\n');
40
+ }
41
+
42
+ /**
43
+ * Channel-agnostic flatten — concatenates every non-empty channel's content
44
+ * (base + voice + text) for paths that aren't a render-time prompt injection,
45
+ * e.g. AI persona enhancement (storytelling, instructions, website-derived).
46
+ * Use this whenever the call has no channel context but still wants the full
47
+ * persona content — `flattenPersonaText` would silently drop voice or text
48
+ * branches because it defaults to text-channel rendering.
49
+ */
50
+ export function flattenPersonaTextAll(input: PersonaText | SkillContextText | null | undefined): string {
51
+ if (input == null) return '';
52
+ if (typeof input === 'string') return input;
53
+ const parts: string[] = [];
54
+ if (input.base) parts.push(input.base);
55
+ if (input.voice) parts.push(input.voice);
56
+ if (input.text) parts.push(input.text);
57
+ return parts.join('\n\n');
58
+ }
59
+
60
+ /**
61
+ * True when the persona has ANY non-empty content on any channel. Used at
62
+ * push/skip boundaries where channel context is not yet known.
63
+ */
64
+ export function hasPersonaTextContent(input: PersonaText | SkillContextText | null | undefined): boolean {
65
+ if (input == null) return false;
66
+ if (typeof input === 'string') return input.trim().length > 0;
67
+ return Boolean(input.base?.trim() || input.voice?.trim() || input.text?.trim());
68
+ }
69
+
70
+ /**
71
+ * Convert a PersonaText into a TypeScript source-code literal suitable
72
+ * for ts-morph setInitializer or template rendering.
73
+ *
74
+ * - String form → `"..."` (double-quoted) or template literal (when newlines present)
75
+ * - Object form → `{ base: ..., voice: ..., text: ... }` with same per-key rule
76
+ */
77
+ export function personaToLiteral(persona: PersonaText): string {
78
+ const formatValue = (v: string): string => {
79
+ if (v.includes('\n')) {
80
+ return '`' + v.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$/g, '\\$') + '`';
81
+ }
82
+ return '"' + v.replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"';
83
+ };
84
+
85
+ if (typeof persona === 'string') return formatValue(persona);
86
+
87
+ const parts: string[] = [];
88
+ if (persona.base !== undefined) parts.push(`base: ${formatValue(persona.base)}`);
89
+ if (persona.voice !== undefined) parts.push(`voice: ${formatValue(persona.voice)}`);
90
+ if (persona.text !== undefined) parts.push(`text: ${formatValue(persona.text)}`);
91
+ return `{ ${parts.join(', ')} }`;
92
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lua-cli",
3
- "version": "3.14.1",
3
+ "version": "3.15.0",
4
4
  "description": "Build, test, and deploy AI agents with custom tools, webhooks, and scheduled jobs. Features LuaAgent unified configuration, streaming chat, and batch deployment.",
5
5
  "readmeFilename": "README.md",
6
6
  "main": "dist/api-exports.js",
@@ -20,7 +20,7 @@
20
20
  "inquirer": "^12.9.6",
21
21
  "stripe": "^17.5.0",
22
22
  "js-yaml": "^4.1.0",
23
- "lua-cli": "^3.14.0",
23
+ "lua-cli": "^3.15.0",
24
24
  "openai": "^5.23.0",
25
25
  "uuid": "^13.0.0",
26
26
  "zod": "^3.24.1"