lua-cli 3.9.2 → 3.10.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 (170) hide show
  1. package/README.md +90 -2
  2. package/dist/api/agent.api.service.d.ts +8 -0
  3. package/dist/api/agent.api.service.d.ts.map +1 -1
  4. package/dist/api/agent.api.service.js +12 -0
  5. package/dist/api/agent.api.service.js.map +1 -1
  6. package/dist/api/device.api.service.d.ts +61 -0
  7. package/dist/api/device.api.service.d.ts.map +1 -0
  8. package/dist/api/device.api.service.js +72 -0
  9. package/dist/api/device.api.service.js.map +1 -0
  10. package/dist/api/lazy-instances.d.ts +1 -0
  11. package/dist/api/lazy-instances.d.ts.map +1 -1
  12. package/dist/api/lazy-instances.js +12 -0
  13. package/dist/api/lazy-instances.js.map +1 -1
  14. package/dist/api-exports.d.ts +38 -2
  15. package/dist/api-exports.d.ts.map +1 -1
  16. package/dist/api-exports.js +45 -2
  17. package/dist/api-exports.js.map +1 -1
  18. package/dist/cli/command-definitions.d.ts.map +1 -1
  19. package/dist/cli/command-definitions.js +100 -33
  20. package/dist/cli/command-definitions.js.map +1 -1
  21. package/dist/commands/agents.d.ts.map +1 -1
  22. package/dist/commands/agents.js +2 -11
  23. package/dist/commands/agents.js.map +1 -1
  24. package/dist/commands/apiKey.d.ts +1 -21
  25. package/dist/commands/apiKey.d.ts.map +1 -1
  26. package/dist/commands/apiKey.js +7 -25
  27. package/dist/commands/apiKey.js.map +1 -1
  28. package/dist/commands/compile.d.ts.map +1 -1
  29. package/dist/commands/compile.js +11 -3
  30. package/dist/commands/compile.js.map +1 -1
  31. package/dist/commands/configure.d.ts +2 -2
  32. package/dist/commands/configure.js +2 -2
  33. package/dist/commands/destroy.d.ts +0 -24
  34. package/dist/commands/destroy.d.ts.map +1 -1
  35. package/dist/commands/destroy.js +8 -30
  36. package/dist/commands/destroy.js.map +1 -1
  37. package/dist/commands/devices.d.ts +6 -0
  38. package/dist/commands/devices.d.ts.map +1 -0
  39. package/dist/commands/devices.js +266 -0
  40. package/dist/commands/devices.js.map +1 -0
  41. package/dist/commands/index.d.ts +2 -0
  42. package/dist/commands/index.d.ts.map +1 -1
  43. package/dist/commands/index.js +2 -0
  44. package/dist/commands/index.js.map +1 -1
  45. package/dist/commands/init.d.ts +1 -0
  46. package/dist/commands/init.d.ts.map +1 -1
  47. package/dist/commands/init.js +102 -39
  48. package/dist/commands/init.js.map +1 -1
  49. package/dist/commands/jobs.js +29 -9
  50. package/dist/commands/jobs.js.map +1 -1
  51. package/dist/commands/models.d.ts +18 -0
  52. package/dist/commands/models.d.ts.map +1 -0
  53. package/dist/commands/models.js +206 -0
  54. package/dist/commands/models.js.map +1 -0
  55. package/dist/commands/push.d.ts.map +1 -1
  56. package/dist/commands/push.js +8 -4
  57. package/dist/commands/push.js.map +1 -1
  58. package/dist/commands/pushBackup.d.ts.map +1 -1
  59. package/dist/commands/pushBackup.js +9 -1
  60. package/dist/commands/pushBackup.js.map +1 -1
  61. package/dist/commands/sync.d.ts +2 -0
  62. package/dist/commands/sync.d.ts.map +1 -1
  63. package/dist/commands/sync.js +116 -17
  64. package/dist/commands/sync.js.map +1 -1
  65. package/dist/compiler/agent-traverser.d.ts.map +1 -1
  66. package/dist/compiler/agent-traverser.js +1 -0
  67. package/dist/compiler/agent-traverser.js.map +1 -1
  68. package/dist/compiler/index.d.ts +1 -1
  69. package/dist/compiler/index.d.ts.map +1 -1
  70. package/dist/compiler/index.js +1 -1
  71. package/dist/compiler/index.js.map +1 -1
  72. package/dist/compiler/plugins/device.plugin.d.ts +46 -0
  73. package/dist/compiler/plugins/device.plugin.d.ts.map +1 -0
  74. package/dist/compiler/plugins/device.plugin.js +279 -0
  75. package/dist/compiler/plugins/device.plugin.js.map +1 -0
  76. package/dist/compiler/plugins/registry.d.ts.map +1 -1
  77. package/dist/compiler/plugins/registry.js +2 -0
  78. package/dist/compiler/plugins/registry.js.map +1 -1
  79. package/dist/compiler/source-writer.d.ts +17 -1
  80. package/dist/compiler/source-writer.d.ts.map +1 -1
  81. package/dist/compiler/source-writer.js +114 -29
  82. package/dist/compiler/source-writer.js.map +1 -1
  83. package/dist/compiler/types.d.ts +44 -2
  84. package/dist/compiler/types.d.ts.map +1 -1
  85. package/dist/compiler/types.js +1 -0
  86. package/dist/compiler/types.js.map +1 -1
  87. package/dist/config/constants.d.ts +7 -11
  88. package/dist/config/constants.d.ts.map +1 -1
  89. package/dist/config/constants.js +7 -11
  90. package/dist/config/constants.js.map +1 -1
  91. package/dist/index.js +0 -0
  92. package/dist/interfaces/agent.d.ts +11 -0
  93. package/dist/interfaces/agent.d.ts.map +1 -1
  94. package/dist/interfaces/devices.d.ts +75 -0
  95. package/dist/interfaces/devices.d.ts.map +1 -0
  96. package/dist/interfaces/devices.js +5 -0
  97. package/dist/interfaces/devices.js.map +1 -0
  98. package/dist/primitives/base.handler.d.ts.map +1 -1
  99. package/dist/primitives/base.handler.js +31 -7
  100. package/dist/primitives/base.handler.js.map +1 -1
  101. package/dist/primitives/device.handler.d.ts +43 -0
  102. package/dist/primitives/device.handler.d.ts.map +1 -0
  103. package/dist/primitives/device.handler.js +82 -0
  104. package/dist/primitives/device.handler.js.map +1 -0
  105. package/dist/primitives/index.d.ts +2 -0
  106. package/dist/primitives/index.d.ts.map +1 -1
  107. package/dist/primitives/index.js +4 -0
  108. package/dist/primitives/index.js.map +1 -1
  109. package/dist/services/analytics.d.ts.map +1 -1
  110. package/dist/services/analytics.js +6 -2
  111. package/dist/services/analytics.js.map +1 -1
  112. package/dist/services/auth.d.ts +16 -26
  113. package/dist/services/auth.d.ts.map +1 -1
  114. package/dist/services/auth.js +45 -101
  115. package/dist/services/auth.js.map +1 -1
  116. package/dist/types/skill.d.ts +98 -0
  117. package/dist/types/skill.d.ts.map +1 -1
  118. package/dist/types/skill.js +21 -0
  119. package/dist/types/skill.js.map +1 -1
  120. package/dist/types/yaml.types.d.ts +8 -0
  121. package/dist/types/yaml.types.d.ts.map +1 -1
  122. package/dist/utils/auth-flows.d.ts.map +1 -1
  123. package/dist/utils/auth-flows.js +8 -12
  124. package/dist/utils/auth-flows.js.map +1 -1
  125. package/dist/utils/backup-helpers.d.ts +41 -10
  126. package/dist/utils/backup-helpers.d.ts.map +1 -1
  127. package/dist/utils/backup-helpers.js +227 -15
  128. package/dist/utils/backup-helpers.js.map +1 -1
  129. package/dist/utils/cli.d.ts.map +1 -1
  130. package/dist/utils/cli.js +2 -3
  131. package/dist/utils/cli.js.map +1 -1
  132. package/dist/utils/command-utils.d.ts +4 -3
  133. package/dist/utils/command-utils.d.ts.map +1 -1
  134. package/dist/utils/command-utils.js +9 -20
  135. package/dist/utils/command-utils.js.map +1 -1
  136. package/dist/utils/init-agent.d.ts +37 -1
  137. package/dist/utils/init-agent.d.ts.map +1 -1
  138. package/dist/utils/init-agent.js +69 -1
  139. package/dist/utils/init-agent.js.map +1 -1
  140. package/dist/utils/init-helpers.d.ts +2 -1
  141. package/dist/utils/init-helpers.d.ts.map +1 -1
  142. package/dist/utils/init-helpers.js +3 -2
  143. package/dist/utils/init-helpers.js.map +1 -1
  144. package/dist/utils/init-prompts.d.ts +11 -1
  145. package/dist/utils/init-prompts.d.ts.map +1 -1
  146. package/dist/utils/init-prompts.js +49 -22
  147. package/dist/utils/init-prompts.js.map +1 -1
  148. package/dist/utils/sandbox-storage.d.ts +24 -18
  149. package/dist/utils/sandbox-storage.d.ts.map +1 -1
  150. package/dist/utils/sandbox-storage.js +108 -101
  151. package/dist/utils/sandbox-storage.js.map +1 -1
  152. package/dist/utils/sandbox.d.ts.map +1 -1
  153. package/dist/utils/sandbox.js +23 -0
  154. package/dist/utils/sandbox.js.map +1 -1
  155. package/docs/CLI_REFERENCE.md +152 -2
  156. package/docs/README.md +5 -3
  157. package/node_modules/@lua/shared-types/dist/index.d.mts +188 -2
  158. package/node_modules/@lua/shared-types/dist/index.d.ts +188 -2
  159. package/node_modules/@lua/shared-types/dist/index.js +171 -2
  160. package/node_modules/@lua/shared-types/dist/index.mjs +164 -1
  161. package/node_modules/@lua/shared-types/src/channel.type.ts +1 -0
  162. package/node_modules/@lua/shared-types/src/device.types.ts +172 -0
  163. package/node_modules/@lua/shared-types/src/index.ts +2 -0
  164. package/node_modules/@lua/shared-types/src/persona-defaults.ts +59 -0
  165. package/package.json +5 -7
  166. package/template/package.json +1 -1
  167. package/dist/utils/keytar-loader.d.ts +0 -20
  168. package/dist/utils/keytar-loader.d.ts.map +0 -1
  169. package/dist/utils/keytar-loader.js +0 -35
  170. package/dist/utils/keytar-loader.js.map +0 -1
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Device Handler
3
+ *
4
+ * Handles CLI operations for device primitives.
5
+ *
6
+ * Devices are versioned primitives (like webhooks, jobs) because
7
+ * their trigger handlers are compiled artifacts that need to be
8
+ * uploaded and versioned alongside the definition.
9
+ */
10
+ import { PrimitiveKind } from '../compiler/types.js';
11
+ import { BASE_URLS } from '../config/constants.js';
12
+ import DeviceApi from '../api/device.api.service.js';
13
+ import { BaseVersionedHandler } from './base.handler.js';
14
+ /**
15
+ * Device primitive handler
16
+ */
17
+ export class DeviceHandler extends BaseVersionedHandler {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.kind = PrimitiveKind.DEVICE;
21
+ this.displayName = 'device';
22
+ this.displayNamePlural = 'devices';
23
+ this.deleteCommand = 'lua devices remove';
24
+ this.yamlConfig = {
25
+ yamlKey: 'devices',
26
+ idField: 'deviceId',
27
+ };
28
+ }
29
+ getApi(apiKey, agentId) {
30
+ return new DeviceApi(BASE_URLS.API, apiKey, agentId);
31
+ }
32
+ async fetchFromServer(api) {
33
+ const response = await api.getDevices();
34
+ if (!response.success || !response.data?.devices) {
35
+ return null;
36
+ }
37
+ return response.data.devices;
38
+ }
39
+ async createOnServer(api, primitive) {
40
+ const device = primitive;
41
+ const response = await api.createDevice({
42
+ name: primitive.name,
43
+ description: primitive.description || `A Lua device for ${primitive.name}`,
44
+ group: device.group,
45
+ });
46
+ if (!response.success || !response.data?.id)
47
+ return null;
48
+ return response.data.id;
49
+ }
50
+ isActive(serverItem) {
51
+ return serverItem.active !== false;
52
+ }
53
+ async pushToServer(apiKey, agentId, entityId, pushData) {
54
+ const api = this.getApi(apiKey, agentId);
55
+ const response = await api.pushDevice(entityId, { ...pushData, deviceId: entityId });
56
+ return { success: response.success, error: response.error?.message };
57
+ }
58
+ async publishVersion(apiKey, agentId, entityId, version) {
59
+ const api = this.getApi(apiKey, agentId);
60
+ const response = await api.publishDeviceVersion(entityId, version);
61
+ return { success: response.success, error: response.error?.message };
62
+ }
63
+ /**
64
+ * Override to include device commands, triggers, and artifact in push data.
65
+ */
66
+ buildPushData(primitive, compressedCode) {
67
+ const device = primitive;
68
+ return {
69
+ name: device.name,
70
+ description: device.description,
71
+ group: device.group,
72
+ commands: device.commands,
73
+ triggers: device.triggers,
74
+ code: compressedCode,
75
+ executeFunction: compressedCode,
76
+ artifactHash: device.hash,
77
+ };
78
+ }
79
+ }
80
+ // Export singleton instance
81
+ export const deviceHandler = new DeviceHandler();
82
+ //# sourceMappingURL=device.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.handler.js","sourceRoot":"","sources":["../../src/primitives/device.handler.ts"],"names":[],"mappings":"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"}
@@ -14,12 +14,14 @@ export { JobHandler } from './job.handler.js';
14
14
  export { PreprocessorHandler } from './preprocessor.handler.js';
15
15
  export { PostprocessorHandler } from './postprocessor.handler.js';
16
16
  export { MCPServerHandler } from './mcp-server.handler.js';
17
+ export { DeviceHandler } from './device.handler.js';
17
18
  export { skillHandler } from './skill.handler.js';
18
19
  export { webhookHandler } from './webhook.handler.js';
19
20
  export { jobHandler } from './job.handler.js';
20
21
  export { preprocessorHandler } from './preprocessor.handler.js';
21
22
  export { postprocessorHandler } from './postprocessor.handler.js';
22
23
  export { mcpServerHandler } from './mcp-server.handler.js';
24
+ export { deviceHandler } from './device.handler.js';
23
25
  /**
24
26
  * Map of primitive handlers by kind.
25
27
  * Note: TOOL kind has no handler — tools are managed as part of skills.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAsB,KAAK,gBAAgB,EAAE,KAAK,yBAAyB,EAAmB,MAAM,YAAY,CAAC;AAGxH,OAAO,EAAgB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQhE,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,yBAAyB,EAAE,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGlJ,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAO9E,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,gBAAgB,GAAG,SAAS,CAE5E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,yBAAyB,EACe,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAA2D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAsB,KAAK,gBAAgB,EAAE,KAAK,yBAAyB,EAAmB,MAAM,YAAY,CAAC;AAGxH,OAAO,EAAgB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAShE,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,yBAAyB,EAAE,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGlJ,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAQ9E,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,gBAAgB,GAAG,SAAS,CAE5E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,yBAAyB,EACe,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAA2D,CAAC"}
@@ -13,6 +13,7 @@ import { jobHandler } from './job.handler.js';
13
13
  import { preprocessorHandler } from './preprocessor.handler.js';
14
14
  import { postprocessorHandler } from './postprocessor.handler.js';
15
15
  import { mcpServerHandler } from './mcp-server.handler.js';
16
+ import { deviceHandler } from './device.handler.js';
16
17
  // Re-export types and helpers
17
18
  export { isVersionedHandler } from './types.js';
18
19
  // Re-export handler classes (for testing/extension)
@@ -22,6 +23,7 @@ export { JobHandler } from './job.handler.js';
22
23
  export { PreprocessorHandler } from './preprocessor.handler.js';
23
24
  export { PostprocessorHandler } from './postprocessor.handler.js';
24
25
  export { MCPServerHandler } from './mcp-server.handler.js';
26
+ export { DeviceHandler } from './device.handler.js';
25
27
  // Re-export singleton instances
26
28
  export { skillHandler } from './skill.handler.js';
27
29
  export { webhookHandler } from './webhook.handler.js';
@@ -29,6 +31,7 @@ export { jobHandler } from './job.handler.js';
29
31
  export { preprocessorHandler } from './preprocessor.handler.js';
30
32
  export { postprocessorHandler } from './postprocessor.handler.js';
31
33
  export { mcpServerHandler } from './mcp-server.handler.js';
34
+ export { deviceHandler } from './device.handler.js';
32
35
  /**
33
36
  * Map of primitive handlers by kind.
34
37
  * Note: TOOL kind has no handler — tools are managed as part of skills.
@@ -40,6 +43,7 @@ export const primitiveHandlers = {
40
43
  [PrimitiveKind.PREPROCESSOR]: preprocessorHandler,
41
44
  [PrimitiveKind.POSTPROCESSOR]: postprocessorHandler,
42
45
  [PrimitiveKind.MCP_SERVER]: mcpServerHandler,
46
+ [PrimitiveKind.DEVICE]: deviceHandler,
43
47
  };
44
48
  /**
45
49
  * Get a primitive handler by kind.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAA0E,MAAM,YAAY,CAAC;AAExH,sBAAsB;AACtB,OAAO,EAAE,YAAY,EAAgB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAkB,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAc,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAuB,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAwB,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAoB,MAAM,yBAAyB,CAAC;AAE7E,8BAA8B;AAC9B,OAAO,EAAE,kBAAkB,EAAoG,MAAM,YAAY,CAAC;AAElJ,oDAAoD;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAqD;IACjF,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY;IACnC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc;IACvC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,UAAU;IAC/B,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,mBAAmB;IACjD,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,oBAAoB;IACnD,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,gBAAgB;CAC7C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAmB;IAC5C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAgC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;KAC3F,MAAM,CAAC,CAAC,CAAC,EAAkC,EAAE,CAAC,kBAAkB,CAAC,CAAE,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAuB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAA0E,MAAM,YAAY,CAAC;AAExH,sBAAsB;AACtB,OAAO,EAAE,YAAY,EAAgB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAkB,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAc,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAuB,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAwB,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAoB,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAiB,MAAM,qBAAqB,CAAC;AAEnE,8BAA8B;AAC9B,OAAO,EAAE,kBAAkB,EAAoG,MAAM,YAAY,CAAC;AAElJ,oDAAoD;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAqD;IACjF,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY;IACnC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc;IACvC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,UAAU;IAC/B,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,mBAAmB;IACjD,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,oBAAoB;IACnD,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,gBAAgB;IAC5C,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa;CACtC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAmB;IAC5C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAgC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;KAC3F,MAAM,CAAC,CAAC,CAAC,EAAkC,EAAE,CAAC,kBAAkB,CAAC,CAAE,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAuB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/services/analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgHH;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAclD;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2E5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC,GAAG,IAAI,CA6BP;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAwBpF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAI1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAO/E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAYzC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAavD"}
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/services/analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgHH;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAclD;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4E5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC,GAAG,IAAI,CA6BP;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAwBpF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAI1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAO/E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAYzC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAavD"}
@@ -11,7 +11,7 @@ import crypto from 'crypto';
11
11
  import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
12
12
  import { platform, release, arch } from 'os';
13
13
  import { POSTHOG_API_KEY, POSTHOG_HOST, TELEMETRY_FILE, CLI_CONFIG_DIR } from '../config/constants.js';
14
- import { loadApiKey, checkApiKey } from '../services/auth.js';
14
+ import { getToken, checkApiKey } from '../services/auth.js';
15
15
  import { readYamlConfig } from '../utils/files.js';
16
16
  let client = null;
17
17
  let sessionConfig = null;
@@ -120,7 +120,11 @@ export async function enrichAnalyticsContext() {
120
120
  if (isTelemetryDisabled())
121
121
  return;
122
122
  try {
123
- const apiKey = await loadApiKey();
123
+ let apiKey = null;
124
+ try {
125
+ apiKey = getToken();
126
+ }
127
+ catch { /* no key — enrich without identity */ }
124
128
  if (apiKey) {
125
129
  // Check if transitioning from anonymous to authenticated
126
130
  const previousDistinctId = sessionDistinctId;
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/services/analytics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/services/analytics.ts"],"names":[],"mappings":"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"}
@@ -2,42 +2,32 @@
2
2
  * Authentication Service
3
3
  * Handles all authentication operations including API key management and OTP flows
4
4
  */
5
+ import 'dotenv/config';
5
6
  import { UserData } from "../interfaces/admin.js";
6
7
  /**
7
- * Saves API key to secure system keychain.
8
+ * Retrieves the API key from the following sources in priority order:
9
+ * 1. LUA_API_KEY environment variable (CI/CD, Docker, manual export)
10
+ * — this also covers .env files, since dotenv/config (imported above)
11
+ * loads them into process.env before this function is called.
12
+ * 2. ~/.lua-cli/credentials file (written by `lua auth configure`)
8
13
  *
9
- * @param apiKey - The API key to store securely
10
- * @returns Promise resolving to true if saved, false on failure
14
+ * Throws AuthenticationError with clear instructions if no key is found.
11
15
  */
12
- export declare function saveApiKey(apiKey: string): Promise<boolean>;
16
+ export declare function getToken(): string;
13
17
  /**
14
- * Saves and verifies an API key in the system keychain.
15
- * Uses setPassword (which atomically overwrites any existing entry),
16
- * then reads back to confirm the write succeeded.
18
+ * Saves API key to ~/.lua-cli/credentials with owner-only permissions (0600).
19
+ * Called by `lua auth configure` after successful server validation.
17
20
  *
18
- * @param newApiKey - The new API key to store
19
- * @returns Promise resolving to true if the new key was verified saved, false otherwise
21
+ * @param apiKey - The API key to store
20
22
  */
21
- export declare function replaceApiKey(newApiKey: string): Promise<boolean>;
23
+ export declare function saveApiKey(apiKey: string): void;
22
24
  /**
23
- * Loads API key from multiple sources in priority order:
24
- * 1. Secure system keychain (macOS Keychain, Windows Credential Vault, Linux libsecret)
25
- * 2. LUA_API_KEY environment variable
26
- * 3. LUA_API_KEY from .env file
25
+ * Deletes the credentials file.
26
+ * Called by `lua auth logout`.
27
27
  *
28
- * This fallback mechanism allows the CLI to work in CI/CD environments where
29
- * keychain access isn't available.
30
- *
31
- * @returns Promise resolving to API key or null if not found in any source
32
- */
33
- export declare function loadApiKey(): Promise<string | null>;
34
- /**
35
- * Deletes API key from secure system keychain.
36
- * This is used for logout functionality.
37
- *
38
- * @returns Promise resolving to true if deleted, false if not found
28
+ * @returns true if deleted successfully, false if not found or deletion failed
39
29
  */
40
- export declare function deleteApiKey(): Promise<boolean>;
30
+ export declare function deleteApiKey(): boolean;
41
31
  /**
42
32
  * Validates an API key with the server and retrieves user data.
43
33
  *
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AASlD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBjE;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBvE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsCzD;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAWrD;AAMD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CASnE;AAMD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS7F;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAShF"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,eAAe,CAAC;AAGvB,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AASlD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAyBjC;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAG/C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAOtC;AAMD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CASnE;AAMD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS7F;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAShF"}
@@ -2,129 +2,73 @@
2
2
  * Authentication Service
3
3
  * Handles all authentication operations including API key management and OTP flows
4
4
  */
5
- import { getKeytar } from "../utils/keytar-loader.js";
5
+ import 'dotenv/config';
6
+ import { readFileSync, writeFileSync, mkdirSync, unlinkSync } from 'fs';
7
+ import { dirname } from 'path';
6
8
  import AuthApi from "../api/auth.api.service.js";
7
- import { BASE_URLS, KEYTAR_SERVICE, KEYTAR_ACCOUNT } from "../config/constants.js";
9
+ import { BASE_URLS, CREDENTIALS_FILE } from "../config/constants.js";
8
10
  import { AuthenticationError } from "../errors/auth.error.js";
9
11
  // ============================================================================
10
- // KEYTAR OPERATIONS (Secure Local Storage)
12
+ // TOKEN RESOLUTION
11
13
  // ============================================================================
12
14
  /**
13
- * Saves API key to secure system keychain.
15
+ * Retrieves the API key from the following sources in priority order:
16
+ * 1. LUA_API_KEY environment variable (CI/CD, Docker, manual export)
17
+ * — this also covers .env files, since dotenv/config (imported above)
18
+ * loads them into process.env before this function is called.
19
+ * 2. ~/.lua-cli/credentials file (written by `lua auth configure`)
14
20
  *
15
- * @param apiKey - The API key to store securely
16
- * @returns Promise resolving to true if saved, false on failure
21
+ * Throws AuthenticationError with clear instructions if no key is found.
17
22
  */
18
- export async function saveApiKey(apiKey) {
19
- const keytar = await getKeytar();
20
- if (!keytar) {
21
- console.warn("Warning: Could not save API key to system keychain. " +
22
- "Set LUA_API_KEY environment variable or add it to your .env file instead.");
23
- return false;
23
+ export function getToken() {
24
+ // Priority 1: Environment variable (also catches .env values loaded by dotenv)
25
+ if (process.env.LUA_API_KEY) {
26
+ return process.env.LUA_API_KEY;
24
27
  }
28
+ // Priority 2: Credentials file (written by `lua auth configure`)
25
29
  try {
26
- await keytar.setPassword(KEYTAR_SERVICE, KEYTAR_ACCOUNT, apiKey);
27
- return true;
30
+ const token = readFileSync(CREDENTIALS_FILE, 'utf8').trim();
31
+ if (token)
32
+ return token;
28
33
  }
29
34
  catch {
30
- console.warn("Warning: Could not save API key to system keychain. " +
31
- "Set LUA_API_KEY environment variable or add it to your .env file instead.");
32
- return false;
33
- }
34
- }
35
- /**
36
- * Saves and verifies an API key in the system keychain.
37
- * Uses setPassword (which atomically overwrites any existing entry),
38
- * then reads back to confirm the write succeeded.
39
- *
40
- * @param newApiKey - The new API key to store
41
- * @returns Promise resolving to true if the new key was verified saved, false otherwise
42
- */
43
- export async function replaceApiKey(newApiKey) {
44
- const saved = await saveApiKey(newApiKey);
45
- if (!saved)
46
- return false;
47
- // Verify via read-back to catch silent keychain failures
48
- const keytar = await getKeytar();
49
- if (!keytar)
50
- return false;
51
- try {
52
- const stored = await keytar.getPassword(KEYTAR_SERVICE, KEYTAR_ACCOUNT);
53
- if (stored !== newApiKey) {
54
- console.warn("Warning: API key verification failed — stored key does not match.");
55
- return false;
56
- }
57
- }
58
- catch {
59
- console.warn("Warning: Could not verify saved API key.");
60
- return false;
61
- }
62
- return true;
35
+ // File doesn't exist or is not readable fall through to error
36
+ }
37
+ throw new AuthenticationError('No API key found.\n' +
38
+ '\n' +
39
+ ' Authenticate using one of these methods:\n' +
40
+ '\n' +
41
+ ' ➜ lua auth configure\n' +
42
+ ' ➜ export LUA_API_KEY="your-api-key-here"\n' +
43
+ ' ➜ Add LUA_API_KEY=... to a .env file\n' +
44
+ '\n' +
45
+ ' 🔑 Get your API key at https://admin.heylua.ai');
63
46
  }
47
+ // ============================================================================
48
+ // CREDENTIALS FILE OPERATIONS (Local Storage)
49
+ // ============================================================================
64
50
  /**
65
- * Loads API key from multiple sources in priority order:
66
- * 1. Secure system keychain (macOS Keychain, Windows Credential Vault, Linux libsecret)
67
- * 2. LUA_API_KEY environment variable
68
- * 3. LUA_API_KEY from .env file
69
- *
70
- * This fallback mechanism allows the CLI to work in CI/CD environments where
71
- * keychain access isn't available.
51
+ * Saves API key to ~/.lua-cli/credentials with owner-only permissions (0600).
52
+ * Called by `lua auth configure` after successful server validation.
72
53
  *
73
- * @returns Promise resolving to API key or null if not found in any source
54
+ * @param apiKey - The API key to store
74
55
  */
75
- export async function loadApiKey() {
76
- // Priority 1: Check secure system keychain (unless skipped)
77
- const keytar = await getKeytar();
78
- if (keytar) {
79
- try {
80
- const keychainKey = await keytar.getPassword(KEYTAR_SERVICE, KEYTAR_ACCOUNT);
81
- if (keychainKey) {
82
- return keychainKey;
83
- }
84
- }
85
- catch {
86
- // Keychain unavailable (e.g., no DBUS in Docker containers)
87
- }
88
- }
89
- // Priority 2: Check environment variable
90
- if (process.env.LUA_API_KEY) {
91
- return process.env.LUA_API_KEY;
92
- }
93
- // Priority 3: Check .env file
94
- try {
95
- const fs = await import('fs');
96
- const path = await import('path');
97
- const envPath = path.join(process.cwd(), '.env');
98
- if (fs.existsSync(envPath)) {
99
- const envContent = fs.readFileSync(envPath, 'utf8');
100
- const match = envContent.match(/^LUA_API_KEY=(.+)$/m);
101
- if (match && match[1]) {
102
- // Remove quotes and inline comments
103
- return match[1].trim().replace(/^["']|["']$/g, '').split('#')[0].trim();
104
- }
105
- }
106
- }
107
- catch (error) {
108
- // Silently fail if .env file can't be read
109
- }
110
- return null;
56
+ export function saveApiKey(apiKey) {
57
+ mkdirSync(dirname(CREDENTIALS_FILE), { recursive: true });
58
+ writeFileSync(CREDENTIALS_FILE, apiKey, { mode: 0o600 });
111
59
  }
112
60
  /**
113
- * Deletes API key from secure system keychain.
114
- * This is used for logout functionality.
61
+ * Deletes the credentials file.
62
+ * Called by `lua auth logout`.
115
63
  *
116
- * @returns Promise resolving to true if deleted, false if not found
64
+ * @returns true if deleted successfully, false if not found or deletion failed
117
65
  */
118
- export async function deleteApiKey() {
119
- const keytar = await getKeytar();
120
- if (!keytar) {
121
- return false;
122
- }
66
+ export function deleteApiKey() {
123
67
  try {
124
- return await keytar.deletePassword(KEYTAR_SERVICE, KEYTAR_ACCOUNT);
68
+ unlinkSync(CREDENTIALS_FILE);
69
+ return true;
125
70
  }
126
71
  catch {
127
- console.warn("Warning: Could not access system keychain to delete API key.");
128
72
  return false;
129
73
  }
130
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"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"}
@@ -843,6 +843,8 @@ export interface LuaAgentConfig {
843
843
  postProcessors?: PostProcessor[];
844
844
  /** Array of MCP servers (Model Context Protocol) for external tool integrations */
845
845
  mcpServers?: LuaMCPServer[];
846
+ /** Array of devices (external hardware that the agent can send commands to and receive triggers from) */
847
+ devices?: LuaDevice[];
846
848
  /** Per-agent message batching/debounce configuration. Overrides platform env var defaults. */
847
849
  batching?: BatchingConfig;
848
850
  }
@@ -884,6 +886,7 @@ export declare class LuaAgent {
884
886
  private readonly preProcessors;
885
887
  private readonly postProcessors;
886
888
  private readonly mcpServers;
889
+ private readonly devices;
887
890
  private readonly batching?;
888
891
  /**
889
892
  * Creates a new LuaAgent instance.
@@ -898,6 +901,7 @@ export declare class LuaAgent {
898
901
  * @param config.preProcessors - Optional array of preprocessors
899
902
  * @param config.postProcessors - Optional array of postprocessors
900
903
  * @param config.mcpServers - Optional array of MCP servers
904
+ * @param config.devices - Optional array of devices (external hardware)
901
905
  * @param config.batching - Optional per-agent batching/debounce configuration
902
906
  */
903
907
  constructor(config: LuaAgentConfig);
@@ -911,5 +915,99 @@ export declare class LuaAgent {
911
915
  getPostProcessors(): PostProcessor[];
912
916
  getMCPServers(): LuaMCPServer[];
913
917
  getBatching(): BatchingConfig | undefined;
918
+ getDevices(): LuaDevice[];
919
+ }
920
+ /** Configuration for a single device command (agent → device) */
921
+ export interface DeviceCommandConfig {
922
+ /** Description of what this command does */
923
+ description: string;
924
+ /** Zod schema for command input validation */
925
+ inputSchema?: ZodType;
926
+ /** Retry configuration for failed commands */
927
+ retry?: {
928
+ maxAttempts: number;
929
+ backoffMs: number;
930
+ };
931
+ /** Timeout in milliseconds (default: 30000) */
932
+ timeoutMs?: number;
933
+ }
934
+ /** Configuration for a single device trigger (device → agent) */
935
+ export interface DeviceTriggerConfig {
936
+ /** Description of when this trigger fires */
937
+ description: string;
938
+ /** Zod schema for trigger payload validation */
939
+ payloadSchema?: ZodType;
940
+ /**
941
+ * Handler that runs on lua-core when the device fires this trigger.
942
+ * Has full access to agent context (can call agent.chat(), use tools, etc.)
943
+ */
944
+ execute?: (payload: any, context: {
945
+ agent: any;
946
+ device: any;
947
+ trigger: any;
948
+ }) => Promise<any>;
949
+ }
950
+ /**
951
+ * Configuration for defining a device that an agent can communicate with.
952
+ *
953
+ * @example
954
+ * ```typescript
955
+ * import { defineDevice } from 'lua-cli';
956
+ * import { z } from 'zod';
957
+ *
958
+ * export const printer = defineDevice({
959
+ * name: 'label-printer',
960
+ * description: 'Thermal label printer on Raspberry Pi',
961
+ * group: 'printers',
962
+ * commands: {
963
+ * print: {
964
+ * description: 'Print a label',
965
+ * inputSchema: z.object({ text: z.string(), copies: z.number().default(1) }),
966
+ * retry: { maxAttempts: 3, backoffMs: 1000 },
967
+ * timeoutMs: 30000,
968
+ * },
969
+ * status: {
970
+ * description: 'Get printer status',
971
+ * timeoutMs: 5000,
972
+ * },
973
+ * },
974
+ * triggers: {
975
+ * paper_low: {
976
+ * description: 'Fired when paper level drops below threshold',
977
+ * payloadSchema: z.object({ level: z.number(), threshold: z.number() }),
978
+ * execute: async (payload, { agent }) => {
979
+ * await agent.chat(\`Printer paper low: \${payload.level}%\`);
980
+ * },
981
+ * },
982
+ * },
983
+ * });
984
+ * ```
985
+ */
986
+ export interface LuaDeviceConfig {
987
+ /** Unique device name (lowercase, hyphens, e.g., 'label-printer') */
988
+ name: string;
989
+ /** Description of the device */
990
+ description?: string;
991
+ /** Optional group name for fan-out commands (e.g., 'printers') */
992
+ group?: string;
993
+ /** Commands the agent can send to the device */
994
+ commands?: Record<string, DeviceCommandConfig>;
995
+ /** Triggers the device can fire to the agent */
996
+ triggers?: Record<string, DeviceTriggerConfig>;
997
+ }
998
+ /**
999
+ * LuaDevice class — represents an external device that an agent can communicate with.
1000
+ *
1001
+ * Used in two ways:
1002
+ * - Class-based: `export default new LuaDevice({ ... })`
1003
+ * - Function-based: `export const myDevice = defineDevice({ ... })` (preferred)
1004
+ */
1005
+ export declare class LuaDevice {
1006
+ readonly name: string;
1007
+ readonly description: string;
1008
+ readonly group?: string;
1009
+ readonly commands: Record<string, DeviceCommandConfig>;
1010
+ readonly triggers: Record<string, DeviceTriggerConfig>;
1011
+ constructor(config: LuaDeviceConfig);
914
1012
  }
915
1013
  //# sourceMappingURL=skill.d.ts.map