lua-cli 3.9.3 → 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 (111) hide show
  1. package/dist/api/device.api.service.d.ts +61 -0
  2. package/dist/api/device.api.service.d.ts.map +1 -0
  3. package/dist/api/device.api.service.js +72 -0
  4. package/dist/api/device.api.service.js.map +1 -0
  5. package/dist/api/lazy-instances.d.ts +1 -0
  6. package/dist/api/lazy-instances.d.ts.map +1 -1
  7. package/dist/api/lazy-instances.js +12 -0
  8. package/dist/api/lazy-instances.js.map +1 -1
  9. package/dist/api-exports.d.ts +38 -2
  10. package/dist/api-exports.d.ts.map +1 -1
  11. package/dist/api-exports.js +45 -2
  12. package/dist/api-exports.js.map +1 -1
  13. package/dist/cli/command-definitions.d.ts.map +1 -1
  14. package/dist/cli/command-definitions.js +75 -11
  15. package/dist/cli/command-definitions.js.map +1 -1
  16. package/dist/commands/devices.d.ts +6 -0
  17. package/dist/commands/devices.d.ts.map +1 -0
  18. package/dist/commands/devices.js +266 -0
  19. package/dist/commands/devices.js.map +1 -0
  20. package/dist/commands/index.d.ts +2 -0
  21. package/dist/commands/index.d.ts.map +1 -1
  22. package/dist/commands/index.js +2 -0
  23. package/dist/commands/index.js.map +1 -1
  24. package/dist/commands/models.d.ts +18 -0
  25. package/dist/commands/models.d.ts.map +1 -0
  26. package/dist/commands/models.js +206 -0
  27. package/dist/commands/models.js.map +1 -0
  28. package/dist/commands/push.d.ts.map +1 -1
  29. package/dist/commands/push.js +8 -4
  30. package/dist/commands/push.js.map +1 -1
  31. package/dist/commands/pushBackup.d.ts.map +1 -1
  32. package/dist/commands/pushBackup.js +9 -1
  33. package/dist/commands/pushBackup.js.map +1 -1
  34. package/dist/commands/sync.d.ts +2 -0
  35. package/dist/commands/sync.d.ts.map +1 -1
  36. package/dist/commands/sync.js +116 -17
  37. package/dist/commands/sync.js.map +1 -1
  38. package/dist/compiler/agent-traverser.d.ts.map +1 -1
  39. package/dist/compiler/agent-traverser.js +1 -0
  40. package/dist/compiler/agent-traverser.js.map +1 -1
  41. package/dist/compiler/index.d.ts +1 -1
  42. package/dist/compiler/index.d.ts.map +1 -1
  43. package/dist/compiler/index.js +1 -1
  44. package/dist/compiler/index.js.map +1 -1
  45. package/dist/compiler/plugins/device.plugin.d.ts +46 -0
  46. package/dist/compiler/plugins/device.plugin.d.ts.map +1 -0
  47. package/dist/compiler/plugins/device.plugin.js +279 -0
  48. package/dist/compiler/plugins/device.plugin.js.map +1 -0
  49. package/dist/compiler/plugins/registry.d.ts.map +1 -1
  50. package/dist/compiler/plugins/registry.js +2 -0
  51. package/dist/compiler/plugins/registry.js.map +1 -1
  52. package/dist/compiler/source-writer.d.ts +17 -1
  53. package/dist/compiler/source-writer.d.ts.map +1 -1
  54. package/dist/compiler/source-writer.js +92 -28
  55. package/dist/compiler/source-writer.js.map +1 -1
  56. package/dist/compiler/types.d.ts +44 -2
  57. package/dist/compiler/types.d.ts.map +1 -1
  58. package/dist/compiler/types.js +1 -0
  59. package/dist/compiler/types.js.map +1 -1
  60. package/dist/interfaces/devices.d.ts +75 -0
  61. package/dist/interfaces/devices.d.ts.map +1 -0
  62. package/dist/interfaces/devices.js +5 -0
  63. package/dist/interfaces/devices.js.map +1 -0
  64. package/dist/primitives/base.handler.d.ts.map +1 -1
  65. package/dist/primitives/base.handler.js +31 -7
  66. package/dist/primitives/base.handler.js.map +1 -1
  67. package/dist/primitives/device.handler.d.ts +43 -0
  68. package/dist/primitives/device.handler.d.ts.map +1 -0
  69. package/dist/primitives/device.handler.js +82 -0
  70. package/dist/primitives/device.handler.js.map +1 -0
  71. package/dist/primitives/index.d.ts +2 -0
  72. package/dist/primitives/index.d.ts.map +1 -1
  73. package/dist/primitives/index.js +4 -0
  74. package/dist/primitives/index.js.map +1 -1
  75. package/dist/types/skill.d.ts +98 -0
  76. package/dist/types/skill.d.ts.map +1 -1
  77. package/dist/types/skill.js +21 -0
  78. package/dist/types/skill.js.map +1 -1
  79. package/dist/types/yaml.types.d.ts +8 -0
  80. package/dist/types/yaml.types.d.ts.map +1 -1
  81. package/dist/utils/backup-helpers.d.ts +41 -10
  82. package/dist/utils/backup-helpers.d.ts.map +1 -1
  83. package/dist/utils/backup-helpers.js +227 -15
  84. package/dist/utils/backup-helpers.js.map +1 -1
  85. package/dist/utils/init-agent.d.ts +8 -1
  86. package/dist/utils/init-agent.d.ts.map +1 -1
  87. package/dist/utils/init-agent.js +14 -1
  88. package/dist/utils/init-agent.js.map +1 -1
  89. package/dist/utils/init-prompts.d.ts +1 -1
  90. package/dist/utils/init-prompts.d.ts.map +1 -1
  91. package/dist/utils/init-prompts.js +7 -20
  92. package/dist/utils/init-prompts.js.map +1 -1
  93. package/dist/utils/sandbox-storage.d.ts +6 -0
  94. package/dist/utils/sandbox-storage.d.ts.map +1 -1
  95. package/dist/utils/sandbox-storage.js +32 -1
  96. package/dist/utils/sandbox-storage.js.map +1 -1
  97. package/dist/utils/sandbox.d.ts.map +1 -1
  98. package/dist/utils/sandbox.js +23 -0
  99. package/dist/utils/sandbox.js.map +1 -1
  100. package/docs/CLI_REFERENCE.md +152 -2
  101. package/docs/README.md +3 -1
  102. package/node_modules/@lua/shared-types/dist/index.d.mts +135 -2
  103. package/node_modules/@lua/shared-types/dist/index.d.ts +135 -2
  104. package/node_modules/@lua/shared-types/dist/index.js +57 -2
  105. package/node_modules/@lua/shared-types/dist/index.mjs +55 -1
  106. package/node_modules/@lua/shared-types/src/channel.type.ts +1 -0
  107. package/node_modules/@lua/shared-types/src/device.types.ts +172 -0
  108. package/node_modules/@lua/shared-types/src/index.ts +2 -0
  109. package/node_modules/@lua/shared-types/src/persona-defaults.ts +59 -0
  110. package/package.json +1 -1
  111. package/template/package.json +1 -1
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/types/skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/types/skill.ts"],"names":[],"mappings":"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"}
@@ -584,6 +584,7 @@ export class LuaAgent {
584
584
  * @param config.preProcessors - Optional array of preprocessors
585
585
  * @param config.postProcessors - Optional array of postprocessors
586
586
  * @param config.mcpServers - Optional array of MCP servers
587
+ * @param config.devices - Optional array of devices (external hardware)
587
588
  * @param config.batching - Optional per-agent batching/debounce configuration
588
589
  */
589
590
  constructor(config) {
@@ -596,6 +597,7 @@ export class LuaAgent {
596
597
  this.preProcessors = config.preProcessors || [];
597
598
  this.postProcessors = config.postProcessors || [];
598
599
  this.mcpServers = config.mcpServers || [];
600
+ this.devices = config.devices || [];
599
601
  this.batching = config.batching;
600
602
  }
601
603
  getName() {
@@ -628,5 +630,24 @@ export class LuaAgent {
628
630
  getBatching() {
629
631
  return this.batching;
630
632
  }
633
+ getDevices() {
634
+ return this.devices;
635
+ }
636
+ }
637
+ /**
638
+ * LuaDevice class — represents an external device that an agent can communicate with.
639
+ *
640
+ * Used in two ways:
641
+ * - Class-based: `export default new LuaDevice({ ... })`
642
+ * - Function-based: `export const myDevice = defineDevice({ ... })` (preferred)
643
+ */
644
+ export class LuaDevice {
645
+ constructor(config) {
646
+ this.name = config.name;
647
+ this.description = config.description || '';
648
+ this.group = config.group;
649
+ this.commands = config.commands || {};
650
+ this.triggers = config.triggers || {};
651
+ }
631
652
  }
632
653
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/types/skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/types/skill.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,13 @@ export interface YamlConfigMCPServer {
49
49
  name: string;
50
50
  mcpServerId: string;
51
51
  }
52
+ export interface YamlConfigDevice {
53
+ name: string;
54
+ version: string;
55
+ deviceId: string;
56
+ group?: string;
57
+ description?: string;
58
+ }
52
59
  export interface YamlConfigBackup {
53
60
  /** Hash of last pushed backup */
54
61
  lastHash?: string;
@@ -64,6 +71,7 @@ export interface YamlConfig {
64
71
  preprocessors?: YamlConfigPreprocessor[];
65
72
  postprocessors?: YamlConfigPostprocessor[];
66
73
  mcpServers?: YamlConfigMCPServer[];
74
+ devices?: YamlConfigDevice[];
67
75
  /** Backup tracking information */
68
76
  backup?: YamlConfigBackup;
69
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"yaml.types.d.ts","sourceRoot":"","sources":["../../src/types/yaml.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACzC,cAAc,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAC3C,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,kCAAkC;IAClC,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B"}
1
+ {"version":3,"file":"yaml.types.d.ts","sourceRoot":"","sources":["../../src/types/yaml.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACzC,cAAc,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAC3C,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,kCAAkC;IAClC,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B"}
@@ -7,6 +7,14 @@
7
7
  import type { CompilationManifest, ProjectFile } from '../compiler/types.js';
8
8
  import type { BackupFileRef, BackupManifest } from '../interfaces/backup.js';
9
9
  import type { YamlConfigBackup } from '../types/yaml.types.js';
10
+ export interface CachedBackupManifest {
11
+ lastHash: string;
12
+ lastPushedAt: string;
13
+ files: Array<{
14
+ relativePath: string;
15
+ hash: string;
16
+ }>;
17
+ }
10
18
  /**
11
19
  * Calculate a hash for a string content.
12
20
  *
@@ -122,6 +130,21 @@ export declare function isBackupOutOfSync(currentHash: string, tracking: YamlCon
122
130
  * @returns YamlConfigBackup object for storing in YAML
123
131
  */
124
132
  export declare function createBackupTracking(projectHash: string): YamlConfigBackup;
133
+ export declare function getBackupCachePath(projectPath?: string): string;
134
+ export declare function writeBackupManifestCache(cache: CachedBackupManifest, projectPath?: string): void;
135
+ export declare function readBackupManifestCache(projectPath?: string): CachedBackupManifest | null;
136
+ export type ConflictGuardWarning = 'no-tracking' | 'manifest-unavailable';
137
+ export interface ConflictGuardResult {
138
+ conflicts: string[];
139
+ warning: ConflictGuardWarning | null;
140
+ }
141
+ export declare function detectLocalConflictsForPull(incomingFiles: Array<{
142
+ relativePath: string;
143
+ hash: string;
144
+ }>, projectPath?: string): ConflictGuardResult;
145
+ export declare function fetchBackupManifestForPull(apiKey: string, agentId: string): Promise<{
146
+ fetched: BackupManifest | null;
147
+ }>;
125
148
  /**
126
149
  * Check whether a backup exists for the given agent.
127
150
  * Returns availability status along with basic metadata if a backup is found.
@@ -136,17 +159,25 @@ export declare function checkBackupAvailability(apiKey: string, agentId: string)
136
159
  lastPushedAt?: string;
137
160
  }>;
138
161
  /**
139
- * Restore project source files from the S3 backup system.
140
- * Downloads all blobs referenced in the backup manifest and writes them to disk.
141
- *
142
- * @param apiKey - API key for authentication
143
- * @param agentId - The agent whose backup to restore
144
- * @param projectPath - Target directory for restored files (defaults to cwd)
145
- * @returns Result object indicating success, file count, and any error message
162
+ * Result of a sync-driven backup restore. `filesWritten`/`filesUnchanged`
163
+ * reflect actual disk activity (byte-level compare), and the primitive lists
164
+ * tell the caller which drifted primitives the backup could resolve.
146
165
  */
147
- export declare function restoreFromBackupForSync(apiKey: string, agentId: string, projectPath?: string): Promise<{
166
+ export interface RestoreForSyncResult {
148
167
  success: boolean;
149
- fileCount: number;
168
+ filesWritten: number;
169
+ filesUnchanged: number;
170
+ primitivesResolved: string[];
171
+ primitivesUnresolved: string[];
172
+ backupAgeDays: number | null;
150
173
  error?: string;
151
- }>;
174
+ }
175
+ /**
176
+ * Restore project source files from the S3 backup for `lua sync --pull`.
177
+ *
178
+ * Differs from `restoreProjectFromBackup` by byte-comparing before writing
179
+ * (so the caller can report what actually changed) and by classifying the
180
+ * restored files against `expectedPrimitives` to report backup coverage.
181
+ */
182
+ export declare function restoreFromBackupForSync(apiKey: string, agentId: string, expectedPrimitives?: string[], projectPath?: string, preFetchedManifest?: BackupManifest | null): Promise<RestoreForSyncResult>;
152
183
  //# sourceMappingURL=backup-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backup-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/backup-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backup-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/backup-helpers.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,24 @@ import fs from 'fs';
8
8
  import path from 'path';
9
9
  import crypto from 'crypto';
10
10
  import zlib from 'zlib';
11
+ // The compiler writes 16-char truncated SHA-256 hashes for project files into
12
+ // `manifest.projectFiles[].hash`. Those hashes flow into the backup manifest
13
+ // (via `prepareFileRefs`) and the local cache (via `writeBackupManifestCache`).
14
+ // For the conflict detector to compare like-with-like, disk hashes must use
15
+ // the same truncation. Importing the compiler's helper directly binds us to
16
+ // that single source of truth — if the compiler ever changes the format, the
17
+ // detector moves with it automatically. Do NOT swap this for the `hashContent`
18
+ // defined below in this file, which returns full 64-char hashes for a
19
+ // different purpose (project-level combined hash).
20
+ import { hashContent as hashProjectFile } from '../compiler/utils/common.js';
11
21
  import { COMPILE_DIRS } from '../config/compile.constants.js';
12
22
  import { loadManifest, hasCompilationOutput } from './artifact-loader.js';
13
23
  import BackupApi from '../api/backup.api.service.js';
14
24
  import { BASE_URLS } from '../config/constants.js';
25
+ // Cache records the file list + hashes from this machine's last successful
26
+ // `lua push backup`. The server does not expose historical manifests, so
27
+ // `lua sync --pull`'s conflict guard relies on this local record.
28
+ const BACKUP_CACHE_FILENAME = 'backup-manifest.json';
15
29
  // =============================================================================
16
30
  // HASH CALCULATION
17
31
  // =============================================================================
@@ -306,8 +320,110 @@ export function createBackupTracking(projectHash) {
306
320
  };
307
321
  }
308
322
  // =============================================================================
323
+ // LOCAL BACKUP MANIFEST CACHE
324
+ // =============================================================================
325
+ export function getBackupCachePath(projectPath = process.cwd()) {
326
+ return path.join(projectPath, '.lua', BACKUP_CACHE_FILENAME);
327
+ }
328
+ // Best-effort: a failed write must not fail the push that just succeeded
329
+ // on the server. A missing cache degrades `lua sync --pull` to its
330
+ // lenient "no-tracking" path.
331
+ export function writeBackupManifestCache(cache, projectPath = process.cwd()) {
332
+ const cachePath = getBackupCachePath(projectPath);
333
+ try {
334
+ fs.mkdirSync(path.dirname(cachePath), { recursive: true });
335
+ fs.writeFileSync(cachePath, JSON.stringify(cache, null, 2), 'utf-8');
336
+ }
337
+ catch (error) {
338
+ const message = error instanceof Error ? error.message : String(error);
339
+ console.warn(`Could not write backup manifest cache: ${message}`);
340
+ }
341
+ }
342
+ // Returns null when the cache is missing, unreadable, or malformed — the
343
+ // conflict guard treats null as the "no-tracking" signal.
344
+ export function readBackupManifestCache(projectPath = process.cwd()) {
345
+ const cachePath = getBackupCachePath(projectPath);
346
+ if (!fs.existsSync(cachePath))
347
+ return null;
348
+ try {
349
+ const raw = fs.readFileSync(cachePath, 'utf-8');
350
+ const parsed = JSON.parse(raw);
351
+ // Guard against hand-edits or version skew, not against our own writer.
352
+ if (typeof parsed.lastHash !== 'string' ||
353
+ typeof parsed.lastPushedAt !== 'string' ||
354
+ !Array.isArray(parsed.files) ||
355
+ !parsed.files.every((f) => f && typeof f.relativePath === 'string' && typeof f.hash === 'string')) {
356
+ return null;
357
+ }
358
+ return parsed;
359
+ }
360
+ catch {
361
+ return null;
362
+ }
363
+ }
364
+ // Algorithm matches spec 2026-04-15-sync-pull-conflict-guard-design.md.
365
+ export function detectLocalConflictsForPull(incomingFiles, projectPath = process.cwd()) {
366
+ const cache = readBackupManifestCache(projectPath);
367
+ if (!cache) {
368
+ return { conflicts: [], warning: 'no-tracking' };
369
+ }
370
+ const cachedByPath = new Map(cache.files.map(f => [f.relativePath, f.hash]));
371
+ const conflicts = new Set();
372
+ const projectRoot = path.resolve(projectPath);
373
+ for (const incoming of incomingFiles) {
374
+ const absPath = path.resolve(projectRoot, incoming.relativePath);
375
+ // Defense-in-depth: skip manifest entries whose path escapes the project
376
+ // directory (e.g. via `../`). The restore step is the real vulnerability
377
+ // surface here; silently skipping keeps the guard from hashing arbitrary
378
+ // files outside the project.
379
+ if (absPath !== projectRoot && !absPath.startsWith(projectRoot + path.sep)) {
380
+ continue;
381
+ }
382
+ if (!fs.existsSync(absPath))
383
+ continue;
384
+ let diskHash;
385
+ try {
386
+ const bytes = fs.readFileSync(absPath, 'utf-8');
387
+ // Must match the compiler's hash format — the cache and server manifest
388
+ // both contain 16-char truncated hashes (see hashProjectFile import above).
389
+ diskHash = hashProjectFile(bytes);
390
+ }
391
+ catch {
392
+ // Unreadable: flag as conflict so we don't silently overwrite.
393
+ conflicts.add(incoming.relativePath);
394
+ continue;
395
+ }
396
+ const cachedHash = cachedByPath.get(incoming.relativePath);
397
+ if (cachedHash !== undefined) {
398
+ if (diskHash !== cachedHash) {
399
+ conflicts.add(incoming.relativePath);
400
+ }
401
+ continue;
402
+ }
403
+ // Not in local cache — user created this file or pushed from a
404
+ // different machine. Flag only if pulling would actually change it.
405
+ if (diskHash !== incoming.hash) {
406
+ conflicts.add(incoming.relativePath);
407
+ }
408
+ }
409
+ return { conflicts: [...conflicts].sort(), warning: null };
410
+ }
411
+ // =============================================================================
309
412
  // SYNC HELPERS
310
413
  // =============================================================================
414
+ // Fetch the current backup manifest for sync's pre-pull conflict guard.
415
+ // Returns `fetched: null` when the request fails so the caller can warn
416
+ // about lenient-mode fallback without pattern-matching on exceptions.
417
+ export async function fetchBackupManifestForPull(apiKey, agentId) {
418
+ try {
419
+ const backupApi = new BackupApi(BASE_URLS.API, apiKey, agentId);
420
+ const response = await backupApi.getBackupManifest();
421
+ return { fetched: response.data ?? null };
422
+ }
423
+ catch {
424
+ return { fetched: null };
425
+ }
426
+ }
311
427
  /**
312
428
  * Check whether a backup exists for the given agent.
313
429
  * Returns availability status along with basic metadata if a backup is found.
@@ -334,35 +450,131 @@ export async function checkBackupAvailability(apiKey, agentId) {
334
450
  }
335
451
  }
336
452
  /**
337
- * Restore project source files from the S3 backup system.
338
- * Downloads all blobs referenced in the backup manifest and writes them to disk.
453
+ * Restore project source files from the S3 backup for `lua sync --pull`.
339
454
  *
340
- * @param apiKey - API key for authentication
341
- * @param agentId - The agent whose backup to restore
342
- * @param projectPath - Target directory for restored files (defaults to cwd)
343
- * @returns Result object indicating success, file count, and any error message
455
+ * Differs from `restoreProjectFromBackup` by byte-comparing before writing
456
+ * (so the caller can report what actually changed) and by classifying the
457
+ * restored files against `expectedPrimitives` to report backup coverage.
344
458
  */
345
- export async function restoreFromBackupForSync(apiKey, agentId, projectPath) {
459
+ export async function restoreFromBackupForSync(apiKey, agentId, expectedPrimitives = [], projectPath, preFetchedManifest) {
346
460
  const targetDir = projectPath || process.cwd();
347
461
  try {
348
462
  const backupApi = new BackupApi(BASE_URLS.API, apiKey, agentId);
349
- const manifestResponse = await backupApi.getBackupManifest();
350
- if (!manifestResponse.data || !manifestResponse.data.files?.length) {
351
- return { success: false, fileCount: 0, error: 'No backup manifest found' };
463
+ const manifest = preFetchedManifest
464
+ ?? (await backupApi.getBackupManifest()).data
465
+ ?? null;
466
+ if (!manifest || !manifest.files?.length) {
467
+ return {
468
+ success: false,
469
+ filesWritten: 0,
470
+ filesUnchanged: 0,
471
+ primitivesResolved: [],
472
+ primitivesUnresolved: [...expectedPrimitives],
473
+ backupAgeDays: null,
474
+ error: 'No backup manifest found',
475
+ };
352
476
  }
353
- const manifest = manifestResponse.data;
354
477
  const uniqueHashes = [...new Set(manifest.files.map(f => f.hash))];
355
478
  const urlsResponse = await backupApi.getBlobUrls(uniqueHashes);
356
479
  if (!urlsResponse.data) {
357
- return { success: false, fileCount: 0, error: 'Failed to get download URLs' };
480
+ return {
481
+ success: false,
482
+ filesWritten: 0,
483
+ filesUnchanged: 0,
484
+ primitivesResolved: [],
485
+ primitivesUnresolved: [...expectedPrimitives],
486
+ backupAgeDays: computeBackupAgeDays(manifest),
487
+ error: 'Failed to get download URLs',
488
+ };
358
489
  }
359
490
  const blobs = await downloadBlobsParallel(urlsResponse.data.urls, 10);
360
- restoreProjectFromBackup(manifest, blobs, targetDir, { overwrite: true });
361
- return { success: true, fileCount: manifest.files.length };
491
+ const { filesWritten, filesUnchanged, restoredContents } = writeBackupFilesWithByteCompare(manifest, blobs, targetDir);
492
+ const { resolved, unresolved } = classifyPrimitiveCoverage(expectedPrimitives, restoredContents);
493
+ return {
494
+ success: true,
495
+ filesWritten,
496
+ filesUnchanged,
497
+ primitivesResolved: resolved,
498
+ primitivesUnresolved: unresolved,
499
+ backupAgeDays: computeBackupAgeDays(manifest),
500
+ };
362
501
  }
363
502
  catch (error) {
364
503
  const message = error instanceof Error ? error.message : 'Unknown error';
365
- return { success: false, fileCount: 0, error: message };
504
+ return {
505
+ success: false,
506
+ filesWritten: 0,
507
+ filesUnchanged: 0,
508
+ primitivesResolved: [],
509
+ primitivesUnresolved: [...expectedPrimitives],
510
+ backupAgeDays: null,
511
+ error: message,
512
+ };
366
513
  }
367
514
  }
515
+ /**
516
+ * Skip the write when disk bytes already match, so callers can distinguish
517
+ * "9 files restored" from "9 files matched disk, 0 written."
518
+ */
519
+ function writeBackupFilesWithByteCompare(manifest, blobs, targetDir) {
520
+ let filesWritten = 0;
521
+ let filesUnchanged = 0;
522
+ const restoredContents = new Map();
523
+ for (const file of manifest.files) {
524
+ const content = blobs.get(file.hash);
525
+ if (!content) {
526
+ throw new Error(`Blob not found for hash: ${file.hash} (${file.relativePath})`);
527
+ }
528
+ restoredContents.set(file.relativePath, content);
529
+ const filePath = path.join(targetDir, file.relativePath);
530
+ if (fs.existsSync(filePath)) {
531
+ const existing = fs.readFileSync(filePath);
532
+ if (existing.equals(content)) {
533
+ filesUnchanged++;
534
+ continue;
535
+ }
536
+ }
537
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
538
+ fs.writeFileSync(filePath, content);
539
+ filesWritten++;
540
+ }
541
+ return { filesWritten, filesUnchanged, restoredContents };
542
+ }
543
+ /**
544
+ * Fuzzy "does the backup define this primitive?" check: match the name as a
545
+ * quoted string literal in any restored .ts/.tsx/.js/.jsx file. Avoids pulling
546
+ * in a TS parser for sync reporting; can mis-classify when a name is built from
547
+ * a variable or appears in a string literal that isn't a primitive declaration.
548
+ */
549
+ function classifyPrimitiveCoverage(expected, restoredContents) {
550
+ if (expected.length === 0) {
551
+ return { resolved: [], unresolved: [] };
552
+ }
553
+ const haystack = Array.from(restoredContents.entries())
554
+ .filter(([relPath]) => /\.(ts|tsx|js|jsx)$/.test(relPath))
555
+ .map(([, buf]) => buf.toString('utf-8'))
556
+ .join('\n');
557
+ const resolved = [];
558
+ const unresolved = [];
559
+ for (const name of expected) {
560
+ const quoted = haystack.includes(`'${name}'`) ||
561
+ haystack.includes(`"${name}"`) ||
562
+ haystack.includes(`\`${name}\``);
563
+ if (quoted)
564
+ resolved.push(name);
565
+ else
566
+ unresolved.push(name);
567
+ }
568
+ return { resolved, unresolved };
569
+ }
570
+ function computeBackupAgeDays(manifest) {
571
+ const createdAt = manifest.createdAt;
572
+ if (!createdAt)
573
+ return null;
574
+ const created = new Date(createdAt).getTime();
575
+ if (!Number.isFinite(created))
576
+ return null;
577
+ const ageMs = Date.now() - created;
578
+ return Math.max(0, Math.floor(ageMs / (1000 * 60 * 60 * 24)));
579
+ }
368
580
  //# sourceMappingURL=backup-helpers.js.map