lua-cli 3.10.3 → 3.11.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 (118) hide show
  1. package/dist/api/agents.api.service.d.ts +21 -0
  2. package/dist/api/agents.api.service.d.ts.map +1 -0
  3. package/dist/api/agents.api.service.js +49 -0
  4. package/dist/api/agents.api.service.js.map +1 -0
  5. package/dist/api/device-trigger.api.service.d.ts +136 -0
  6. package/dist/api/device-trigger.api.service.d.ts.map +1 -0
  7. package/dist/api/device-trigger.api.service.js +120 -0
  8. package/dist/api/device-trigger.api.service.js.map +1 -0
  9. package/dist/api/lazy-instances.d.ts +8 -0
  10. package/dist/api/lazy-instances.d.ts.map +1 -1
  11. package/dist/api/lazy-instances.js +16 -0
  12. package/dist/api/lazy-instances.js.map +1 -1
  13. package/dist/api-exports.d.ts +57 -2
  14. package/dist/api-exports.d.ts.map +1 -1
  15. package/dist/api-exports.js +36 -2
  16. package/dist/api-exports.js.map +1 -1
  17. package/dist/cli/command-definitions.d.ts.map +1 -1
  18. package/dist/cli/command-definitions.js +14 -1
  19. package/dist/cli/command-definitions.js.map +1 -1
  20. package/dist/commands/governance.d.ts +7 -0
  21. package/dist/commands/governance.d.ts.map +1 -0
  22. package/dist/commands/governance.js +256 -0
  23. package/dist/commands/governance.js.map +1 -0
  24. package/dist/commands/index.d.ts +1 -0
  25. package/dist/commands/index.d.ts.map +1 -1
  26. package/dist/commands/index.js +1 -0
  27. package/dist/commands/index.js.map +1 -1
  28. package/dist/commands/push.d.ts.map +1 -1
  29. package/dist/commands/push.js +7 -3
  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 +53 -2
  33. package/dist/commands/pushBackup.js.map +1 -1
  34. package/dist/commands/sync.d.ts.map +1 -1
  35. package/dist/commands/sync.js +157 -58
  36. package/dist/commands/sync.js.map +1 -1
  37. package/dist/compiler/agent-traverser.d.ts.map +1 -1
  38. package/dist/compiler/agent-traverser.js +1 -0
  39. package/dist/compiler/agent-traverser.js.map +1 -1
  40. package/dist/compiler/plugins/agent.plugin.d.ts +5 -0
  41. package/dist/compiler/plugins/agent.plugin.d.ts.map +1 -1
  42. package/dist/compiler/plugins/agent.plugin.js +13 -0
  43. package/dist/compiler/plugins/agent.plugin.js.map +1 -1
  44. package/dist/compiler/plugins/device-trigger.plugin.d.ts +38 -0
  45. package/dist/compiler/plugins/device-trigger.plugin.d.ts.map +1 -0
  46. package/dist/compiler/plugins/device-trigger.plugin.js +103 -0
  47. package/dist/compiler/plugins/device-trigger.plugin.js.map +1 -0
  48. package/dist/compiler/plugins/device.plugin.d.ts +2 -9
  49. package/dist/compiler/plugins/device.plugin.d.ts.map +1 -1
  50. package/dist/compiler/plugins/device.plugin.js +2 -204
  51. package/dist/compiler/plugins/device.plugin.js.map +1 -1
  52. package/dist/compiler/plugins/registry.d.ts.map +1 -1
  53. package/dist/compiler/plugins/registry.js +2 -0
  54. package/dist/compiler/plugins/registry.js.map +1 -1
  55. package/dist/compiler/types.d.ts +21 -35
  56. package/dist/compiler/types.d.ts.map +1 -1
  57. package/dist/compiler/types.js +1 -0
  58. package/dist/compiler/types.js.map +1 -1
  59. package/dist/index.js +8 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/interfaces/agent.d.ts +3 -1
  62. package/dist/interfaces/agent.d.ts.map +1 -1
  63. package/dist/interfaces/device-triggers.d.ts +82 -0
  64. package/dist/interfaces/device-triggers.d.ts.map +1 -0
  65. package/dist/interfaces/device-triggers.js +6 -0
  66. package/dist/interfaces/device-triggers.js.map +1 -0
  67. package/dist/primitives/agent.handler.d.ts +7 -2
  68. package/dist/primitives/agent.handler.d.ts.map +1 -1
  69. package/dist/primitives/agent.handler.js +43 -6
  70. package/dist/primitives/agent.handler.js.map +1 -1
  71. package/dist/primitives/device-trigger.handler.d.ts +56 -0
  72. package/dist/primitives/device-trigger.handler.d.ts.map +1 -0
  73. package/dist/primitives/device-trigger.handler.js +100 -0
  74. package/dist/primitives/device-trigger.handler.js.map +1 -0
  75. package/dist/primitives/device.handler.d.ts.map +1 -1
  76. package/dist/primitives/device.handler.js +0 -2
  77. package/dist/primitives/device.handler.js.map +1 -1
  78. package/dist/primitives/index.d.ts +2 -0
  79. package/dist/primitives/index.d.ts.map +1 -1
  80. package/dist/primitives/index.js +4 -0
  81. package/dist/primitives/index.js.map +1 -1
  82. package/dist/types/skill.d.ts +65 -8
  83. package/dist/types/skill.d.ts.map +1 -1
  84. package/dist/types/skill.js +18 -0
  85. package/dist/types/skill.js.map +1 -1
  86. package/dist/types/yaml.types.d.ts +7 -0
  87. package/dist/types/yaml.types.d.ts.map +1 -1
  88. package/dist/utils/artifact-loader.d.ts +2 -1
  89. package/dist/utils/artifact-loader.d.ts.map +1 -1
  90. package/dist/utils/artifact-loader.js +3 -0
  91. package/dist/utils/artifact-loader.js.map +1 -1
  92. package/dist/utils/backup-helpers.d.ts +83 -0
  93. package/dist/utils/backup-helpers.d.ts.map +1 -1
  94. package/dist/utils/backup-helpers.js +157 -0
  95. package/dist/utils/backup-helpers.js.map +1 -1
  96. package/dist/utils/sandbox.d.ts.map +1 -1
  97. package/dist/utils/sandbox.js +10 -0
  98. package/dist/utils/sandbox.js.map +1 -1
  99. package/dist/utils/sync-display.d.ts +1 -0
  100. package/dist/utils/sync-display.d.ts.map +1 -1
  101. package/dist/utils/sync-display.js +8 -0
  102. package/dist/utils/sync-display.js.map +1 -1
  103. package/dist/utils/sync-fetch.d.ts +9 -2
  104. package/dist/utils/sync-fetch.d.ts.map +1 -1
  105. package/dist/utils/sync-fetch.js +21 -7
  106. package/dist/utils/sync-fetch.js.map +1 -1
  107. package/dist/utils/sync-helpers.d.ts +2 -2
  108. package/dist/utils/sync-helpers.d.ts.map +1 -1
  109. package/dist/utils/sync-helpers.js +2 -2
  110. package/dist/utils/sync-helpers.js.map +1 -1
  111. package/node_modules/@lua/shared-types/dist/index.d.mts +122 -1
  112. package/node_modules/@lua/shared-types/dist/index.d.ts +122 -1
  113. package/node_modules/@lua/shared-types/src/agent-config.types.ts +31 -0
  114. package/node_modules/@lua/shared-types/src/agent-invocation.types.ts +73 -0
  115. package/node_modules/@lua/shared-types/src/device.types.ts +18 -0
  116. package/node_modules/@lua/shared-types/src/index.ts +2 -0
  117. package/package.json +2 -1
  118. package/template/package.json +1 -1
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Device Trigger Interfaces
3
+ * Structures for device trigger management
4
+ */
5
+ /**
6
+ * DTO for creating a new device trigger
7
+ */
8
+ export interface CreateDeviceTriggerDTO {
9
+ name: string;
10
+ description?: string;
11
+ }
12
+ /**
13
+ * DTO for pushing a device trigger version
14
+ */
15
+ export interface PushDeviceTriggerVersionDTO {
16
+ name: string;
17
+ version: string;
18
+ description?: string;
19
+ deviceTriggerId: string;
20
+ payloadSchema?: any;
21
+ code?: string;
22
+ executeFunction?: string;
23
+ }
24
+ /**
25
+ * DTO for updating a device trigger version
26
+ */
27
+ export interface UpdateDeviceTriggerVersionDTO {
28
+ version?: string;
29
+ description?: string;
30
+ payloadSchema?: any;
31
+ code?: string;
32
+ executeFunction?: string;
33
+ }
34
+ /**
35
+ * Device trigger version information
36
+ */
37
+ export interface DeviceTriggerVersion {
38
+ id: string;
39
+ version: string;
40
+ description: string;
41
+ active: boolean;
42
+ payloadSchema?: any;
43
+ createdAt: string;
44
+ updatedAt: string;
45
+ }
46
+ /**
47
+ * Device trigger information
48
+ */
49
+ export interface DeviceTrigger {
50
+ id: string;
51
+ name: string;
52
+ description: string;
53
+ active: boolean;
54
+ createdAt: string;
55
+ updatedAt: string;
56
+ versions: DeviceTriggerVersion[];
57
+ activeVersionId?: string;
58
+ }
59
+ /**
60
+ * Response from get all device triggers API endpoint
61
+ */
62
+ export interface GetDeviceTriggersResponse {
63
+ deviceTriggers: DeviceTrigger[];
64
+ }
65
+ /**
66
+ * Response from delete device trigger API endpoint
67
+ */
68
+ export interface DeleteDeviceTriggerResponse {
69
+ message: string;
70
+ deleted: boolean;
71
+ deactivated: boolean;
72
+ }
73
+ /**
74
+ * Response from create device trigger API endpoint
75
+ */
76
+ export interface CreateDeviceTriggerResponse {
77
+ id: string;
78
+ name: string;
79
+ description?: string;
80
+ agentId: string;
81
+ }
82
+ //# sourceMappingURL=device-triggers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-triggers.d.ts","sourceRoot":"","sources":["../../src/interfaces/device-triggers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Device Trigger Interfaces
3
+ * Structures for device trigger management
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=device-triggers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-triggers.js","sourceRoot":"","sources":["../../src/interfaces/device-triggers.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -11,13 +11,14 @@
11
11
  * - Drift: detect differences between local and server state
12
12
  * - Unified push: push all agent config from manifest in one call
13
13
  */
14
- import type { PersonaDrift, NameDrift, ModelDrift } from '../utils/sync-fetch.js';
14
+ import type { PersonaDrift, NameDrift, ModelDrift, GovernanceDrift } from '../utils/sync-fetch.js';
15
15
  import type { CompilationManifest } from '../compiler/types.js';
16
- import { BatchingConfig } from '../types/skill.js';
16
+ import type { BatchingConfig } from '@lua/shared-types';
17
17
  export interface AgentDrift {
18
18
  name: NameDrift | null;
19
19
  persona: PersonaDrift | null;
20
20
  model: ModelDrift | null;
21
+ governance: GovernanceDrift | null;
21
22
  }
22
23
  export interface AgentPushResult {
23
24
  persona?: {
@@ -30,6 +31,9 @@ export interface AgentPushResult {
30
31
  batching?: {
31
32
  success: boolean;
32
33
  };
34
+ governance?: {
35
+ success: boolean;
36
+ };
33
37
  }
34
38
  interface SyncContext {
35
39
  apiKey: string;
@@ -48,6 +52,7 @@ export declare class AgentHandler {
48
52
  }>;
49
53
  pushModel(ctx: SyncContext, model?: string | null, modelResolver?: string | null): Promise<boolean>;
50
54
  pushBatching(ctx: SyncContext, batchingConfig: BatchingConfig | null): Promise<boolean>;
55
+ pushGovernance(ctx: SyncContext, governance: any | null): Promise<boolean>;
51
56
  pullName(serverName: string): boolean;
52
57
  pullPersona(serverPersona: string): boolean;
53
58
  pullModel(serverModel: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.handler.d.ts","sourceRoot":"","sources":["../../src/primitives/agent.handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,sBAAsB,CAAC;AAM/E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACjC;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,qBAAa,YAAY;IAMvB;;;OAGG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,eAAe,CAAC;IAsFrB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1D,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAS/F,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAMnG,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAU7F,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIrC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAI3C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAQvC;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAStE;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;CAGrC;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
1
+ {"version":3,"file":"agent.handler.d.ts","sourceRoot":"","sources":["../../src/primitives/agent.handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,sBAAsB,CAAC;AAM/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMxD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAChC,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACnC;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAWD,qBAAa,YAAY;IAMvB;;;OAGG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,eAAe,CAAC;IA4GrB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1D,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAS/F,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAMnG,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAMvF,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAahF,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIrC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAI3C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAQvC;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAWtE;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;CAGrC;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import { writeProgress, writeSuccess } from '../utils/cli.js';
15
15
  import { setAgentName, setAgentPersona, setAgentModel } from '../compiler/index.js';
16
- import { checkPersonaDrift, checkNameDrift, checkModelDrift } from '../utils/sync-fetch.js';
16
+ import { fetchServerAgent, checkPersonaDrift, checkNameDrift, checkModelDrift, checkGovernanceDrift } from '../utils/sync-fetch.js';
17
17
  import { PrimitiveKind } from '../compiler/types.js';
18
18
  import { getPrimitivesByKind, loadArtifact, compressForPush } from '../utils/artifact-loader.js';
19
19
  import PersonaApi from '../api/persona.api.service.js';
@@ -22,6 +22,10 @@ import { BASE_URLS } from '../config/constants.js';
22
22
  // =============================================================================
23
23
  // AGENT HANDLER
24
24
  // =============================================================================
25
+ function stripApiKey(governance) {
26
+ const { apiKey: _stripped, ...rest } = governance;
27
+ return rest;
28
+ }
25
29
  export class AgentHandler {
26
30
  // ===========================================================================
27
31
  // UNIFIED PUSH (from manifest — used by "lua push all" and "lua push agent")
@@ -109,6 +113,29 @@ export class AgentHandler {
109
113
  console.error(` ❌ Failed to push batching config: ${error.message}`);
110
114
  result.batching = { success: false };
111
115
  }
116
+ // Push governance config only when the manifest actually defines it.
117
+ // Agents that never configured governance don't trigger an unrelated
118
+ // server write on every push. To explicitly clear a previously-set
119
+ // config, use `lua governance remove`, which sends null via the same
120
+ // pushGovernance path.
121
+ const governance = agent?.governance;
122
+ if (governance) {
123
+ writeProgress('\n🛡️ Pushing governance configuration...');
124
+ try {
125
+ const success = await this.pushGovernance({ apiKey, agentId }, governance);
126
+ result.governance = { success };
127
+ if (success) {
128
+ writeSuccess(` ✅ Governance config pushed (${governance.mode} mode)`);
129
+ }
130
+ else {
131
+ console.error(' ❌ Failed to push governance config');
132
+ }
133
+ }
134
+ catch (error) {
135
+ console.error(` ❌ Failed to push governance config: ${error.message}`);
136
+ result.governance = { success: false };
137
+ }
138
+ }
112
139
  return result;
113
140
  }
114
141
  // ===========================================================================
@@ -137,6 +164,14 @@ export class AgentHandler {
137
164
  const result = await agentApi.updateAgent(ctx.agentId, { batchingConfig });
138
165
  return result.success;
139
166
  }
167
+ async pushGovernance(ctx, governance) {
168
+ const agentApi = new AgentApi(BASE_URLS.API, ctx.apiKey);
169
+ // Defence-in-depth: strip any raw apiKey before hitting the wire, even
170
+ // if an older governance.ts still has one. Only apiKeyEnvVar is allowed.
171
+ const safeGovernance = governance ? stripApiKey(governance) : governance;
172
+ const result = await agentApi.updateAgent(ctx.agentId, { governance: safeGovernance });
173
+ return result.success;
174
+ }
140
175
  // ===========================================================================
141
176
  // PULL (server → local source code, used by sync command)
142
177
  // ===========================================================================
@@ -157,18 +192,20 @@ export class AgentHandler {
157
192
  * Runs all checks in parallel.
158
193
  */
159
194
  async checkDrift(apiKey, agentId) {
160
- const [name, persona, model] = await Promise.all([
161
- checkNameDrift(apiKey, agentId),
195
+ const agent = await fetchServerAgent(apiKey, agentId);
196
+ const [name, persona, model, governance] = await Promise.all([
197
+ checkNameDrift(apiKey, agentId, agent),
162
198
  checkPersonaDrift(apiKey, agentId),
163
- checkModelDrift(apiKey, agentId),
199
+ checkModelDrift(apiKey, agentId, agent),
200
+ checkGovernanceDrift(apiKey, agentId, agent),
164
201
  ]);
165
- return { name, persona, model };
202
+ return { name, persona, model, governance };
166
203
  }
167
204
  /**
168
205
  * Returns true if any agent field has drifted.
169
206
  */
170
207
  hasDrift(drift) {
171
- return !!(drift.name || drift.persona || drift.model);
208
+ return !!(drift.name || drift.persona || drift.model || drift.governance);
172
209
  }
173
210
  }
174
211
  export const agentHandler = new AgentHandler();
@@ -1 +1 @@
1
- {"version":3,"file":"agent.handler.js","sourceRoot":"","sources":["../../src/primitives/agent.handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.handler.js","sourceRoot":"","sources":["../../src/primitives/agent.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Device Trigger Handler
3
+ *
4
+ * Handles CLI operations for device trigger primitives.
5
+ *
6
+ * Device triggers:
7
+ * - Use 'active' field on entity
8
+ * - Use 'isActive' field on versions
9
+ */
10
+ import { PrimitiveKind, ManifestPrimitive } from '../compiler/types.js';
11
+ import DeviceTriggerApi from '../api/device-trigger.api.service.js';
12
+ import type { PushDeviceTriggerVersionDTO } from '../interfaces/device-triggers.js';
13
+ import { BaseVersionedHandler } from './base.handler.js';
14
+ import type { YamlPrimitiveConfig, ServerSyncData } from './types.js';
15
+ import type { YamlConfigDeviceTrigger } from '../types/yaml.types.js';
16
+ /**
17
+ * Device trigger primitive handler
18
+ */
19
+ export declare class DeviceTriggerHandler extends BaseVersionedHandler<YamlConfigDeviceTrigger, PushDeviceTriggerVersionDTO> {
20
+ readonly kind = PrimitiveKind.DEVICE_TRIGGER;
21
+ readonly displayName = "device trigger";
22
+ readonly displayNamePlural = "device triggers";
23
+ readonly deleteCommand = "lua device-triggers delete";
24
+ readonly yamlConfig: YamlPrimitiveConfig;
25
+ /**
26
+ * Override fetchServerState to treat auth/network errors as non-fatal.
27
+ *
28
+ * The Device Gateway is feature-gated on the server
29
+ * (DEVICE_GATEWAY_ENABLED). When the feature is off or the endpoint
30
+ * doesn't exist for a given agent, the server returns 401 or 404.
31
+ * Device triggers are an optional primitive. A missing or inaccessible
32
+ * endpoint should not block compiling other primitives.
33
+ */
34
+ fetchServerState(apiKey: string, agentId: string): Promise<ServerSyncData>;
35
+ protected getApi(apiKey: string, agentId: string): DeviceTriggerApi;
36
+ protected fetchFromServer(api: DeviceTriggerApi): Promise<any[] | null>;
37
+ protected createOnServer(api: DeviceTriggerApi, primitive: ManifestPrimitive): Promise<string | null>;
38
+ /**
39
+ * Device triggers use 'active' field directly on the entity.
40
+ */
41
+ isActive(serverItem: any): boolean;
42
+ pushToServer(apiKey: string, agentId: string, entityId: string, pushData: PushDeviceTriggerVersionDTO): Promise<{
43
+ success: boolean;
44
+ error: string | undefined;
45
+ }>;
46
+ publishVersion(apiKey: string, agentId: string, entityId: string, version: string): Promise<{
47
+ success: boolean;
48
+ error: string | undefined;
49
+ }>;
50
+ /**
51
+ * Override to include device trigger payload schema in push data.
52
+ */
53
+ protected buildPushData(primitive: ManifestPrimitive, compressedCode: string): Record<string, unknown>;
54
+ }
55
+ export declare const deviceTriggerHandler: DeviceTriggerHandler;
56
+ //# sourceMappingURL=device-trigger.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-trigger.handler.d.ts","sourceRoot":"","sources":["../../src/primitives/device-trigger.handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAyB,MAAM,sBAAsB,CAAC;AAE/F,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,oBAAoB,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;IAClH,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,WAAW,oBAAoB;IACxC,QAAQ,CAAC,iBAAiB,qBAAqB;IAC/C,QAAQ,CAAC,aAAa,gCAAgC;IACtD,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAGtC;IAEF;;;;;;;;OAQG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAWhF,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB;cAInD,eAAe,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;cAQ7D,cAAc,CAAC,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS3G;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO;IAI5B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAA2B;;;;IAMrG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;IAMvF;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAUvG;AAGD,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Device Trigger Handler
3
+ *
4
+ * Handles CLI operations for device trigger primitives.
5
+ *
6
+ * Device triggers:
7
+ * - Use 'active' field on entity
8
+ * - Use 'isActive' field on versions
9
+ */
10
+ import { PrimitiveKind } from '../compiler/types.js';
11
+ import { BASE_URLS } from '../config/constants.js';
12
+ import DeviceTriggerApi from '../api/device-trigger.api.service.js';
13
+ import { BaseVersionedHandler } from './base.handler.js';
14
+ /**
15
+ * Device trigger primitive handler
16
+ */
17
+ export class DeviceTriggerHandler extends BaseVersionedHandler {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.kind = PrimitiveKind.DEVICE_TRIGGER;
21
+ this.displayName = 'device trigger';
22
+ this.displayNamePlural = 'device triggers';
23
+ this.deleteCommand = 'lua device-triggers delete';
24
+ this.yamlConfig = {
25
+ yamlKey: 'deviceTriggers',
26
+ idField: 'deviceTriggerId',
27
+ };
28
+ }
29
+ /**
30
+ * Override fetchServerState to treat auth/network errors as non-fatal.
31
+ *
32
+ * The Device Gateway is feature-gated on the server
33
+ * (DEVICE_GATEWAY_ENABLED). When the feature is off or the endpoint
34
+ * doesn't exist for a given agent, the server returns 401 or 404.
35
+ * Device triggers are an optional primitive. A missing or inaccessible
36
+ * endpoint should not block compiling other primitives.
37
+ */
38
+ async fetchServerState(apiKey, agentId) {
39
+ try {
40
+ const api = this.getApi(apiKey, agentId);
41
+ const serverItems = await this.fetchFromServer(api);
42
+ return { serverItems };
43
+ }
44
+ catch {
45
+ // Silently degrade — device trigger sync is optional.
46
+ return { serverItems: null };
47
+ }
48
+ }
49
+ getApi(apiKey, agentId) {
50
+ return new DeviceTriggerApi(BASE_URLS.API, apiKey, agentId);
51
+ }
52
+ async fetchFromServer(api) {
53
+ const response = await api.getDeviceTriggers();
54
+ if (!response.success || !response.data?.deviceTriggers) {
55
+ return null;
56
+ }
57
+ return response.data.deviceTriggers;
58
+ }
59
+ async createOnServer(api, primitive) {
60
+ const response = await api.createDeviceTrigger({
61
+ name: primitive.name,
62
+ description: primitive.description || `A Lua device trigger for ${primitive.name}`,
63
+ });
64
+ if (!response.success || !response.data?.id)
65
+ return null;
66
+ return response.data.id;
67
+ }
68
+ /**
69
+ * Device triggers use 'active' field directly on the entity.
70
+ */
71
+ isActive(serverItem) {
72
+ return serverItem.active !== false;
73
+ }
74
+ async pushToServer(apiKey, agentId, entityId, pushData) {
75
+ const api = this.getApi(apiKey, agentId);
76
+ const response = await api.pushDeviceTrigger(entityId, { ...pushData, deviceTriggerId: entityId });
77
+ return { success: response.success, error: response.error?.message };
78
+ }
79
+ async publishVersion(apiKey, agentId, entityId, version) {
80
+ const api = this.getApi(apiKey, agentId);
81
+ const response = await api.publishDeviceTriggerVersion(entityId, version);
82
+ return { success: response.success, error: response.error?.message };
83
+ }
84
+ /**
85
+ * Override to include device trigger payload schema in push data.
86
+ */
87
+ buildPushData(primitive, compressedCode) {
88
+ const deviceTrigger = primitive;
89
+ return {
90
+ name: deviceTrigger.name,
91
+ description: deviceTrigger.description,
92
+ code: compressedCode,
93
+ executeFunction: compressedCode,
94
+ payloadSchema: deviceTrigger.schemas?.payload || undefined,
95
+ };
96
+ }
97
+ }
98
+ // Export singleton instance
99
+ export const deviceTriggerHandler = new DeviceTriggerHandler();
100
+ //# sourceMappingURL=device-trigger.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-trigger.handler.js","sourceRoot":"","sources":["../../src/primitives/device-trigger.handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAA4C,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAIzD;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,oBAA0E;IAApH;;QACW,SAAI,GAAG,aAAa,CAAC,cAAc,CAAC;QACpC,gBAAW,GAAG,gBAAgB,CAAC;QAC/B,sBAAiB,GAAG,iBAAiB,CAAC;QACtC,kBAAa,GAAG,4BAA4B,CAAC;QAC7C,eAAU,GAAwB;YACzC,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,iBAAiB;SAC3B,CAAC;IA2EJ,CAAC;IAzEC;;;;;;;;OAQG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,OAAe;QACpD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACpD,OAAO,EAAE,WAAW,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;YACtD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAES,MAAM,CAAC,MAAc,EAAE,OAAe;QAC9C,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,GAAqB;QACnD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;IACtC,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,GAAqB,EAAE,SAA4B;QAChF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC;YAC7C,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,4BAA4B,SAAS,CAAC,IAAI,EAAE;SACnF,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;YAAE,OAAO,IAAI,CAAC;QACzD,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,UAAe;QACtB,OAAO,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,OAAe,EAAE,QAAgB,EAAE,QAAqC;QACzG,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnG,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,OAAe,EAAE,QAAgB,EAAE,OAAe;QACrF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,2BAA2B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1E,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IACvE,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,SAA4B,EAAE,cAAsB;QAC1E,MAAM,aAAa,GAAG,SAAkC,CAAC;QACzD,OAAO;YACL,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,IAAI,EAAE,cAAc;YACpB,eAAe,EAAE,cAAc;YAC/B,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,IAAI,SAAS;SAC3D,CAAC;IACJ,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"device.handler.d.ts","sourceRoot":"","sources":["../../src/primitives/device.handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAExF,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;GAEG;AACH,qBAAa,aAAc,SAAQ,oBAAoB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IAC7F,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,WAAW,YAAY;IAChC,QAAQ,CAAC,iBAAiB,aAAa;IACvC,QAAQ,CAAC,aAAa,wBAAwB;IAC9C,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAGtC;IAEF,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS;IAI5D;;;;;;;;;;;;OAYG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;cAWhE,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;cAQtD,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWpG,QAAQ,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO;IAI5B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB;;;;IAM9F,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;IAMvF;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAavG;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}
1
+ {"version":3,"file":"device.handler.d.ts","sourceRoot":"","sources":["../../src/primitives/device.handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAExF,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;GAEG;AACH,qBAAa,aAAc,SAAQ,oBAAoB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IAC7F,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,WAAW,YAAY;IAChC,QAAQ,CAAC,iBAAiB,aAAa;IACvC,QAAQ,CAAC,aAAa,wBAAwB;IAC9C,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAGtC;IAEF,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS;IAI5D;;;;;;;;;;;;OAYG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;cAWhE,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;cAQtD,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWpG,QAAQ,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO;IAI5B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB;;;;IAM9F,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;IAMvF;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAWvG;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -93,8 +93,6 @@ export class DeviceHandler extends BaseVersionedHandler {
93
93
  name: device.name,
94
94
  description: device.description,
95
95
  group: device.group,
96
- commands: device.commands,
97
- triggers: device.triggers,
98
96
  code: compressedCode,
99
97
  executeFunction: compressedCode,
100
98
  artifactHash: device.hash,
@@ -1 +1 @@
1
- {"version":3,"file":"device.handler.js","sourceRoot":"","sources":["../../src/primitives/device.handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device.handler.js","sourceRoot":"","sources":["../../src/primitives/device.handler.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ export { PreprocessorHandler } from './preprocessor.handler.js';
15
15
  export { PostprocessorHandler } from './postprocessor.handler.js';
16
16
  export { MCPServerHandler } from './mcp-server.handler.js';
17
17
  export { DeviceHandler } from './device.handler.js';
18
+ export { DeviceTriggerHandler } from './device-trigger.handler.js';
18
19
  export { skillHandler } from './skill.handler.js';
19
20
  export { webhookHandler } from './webhook.handler.js';
20
21
  export { jobHandler } from './job.handler.js';
@@ -22,6 +23,7 @@ export { preprocessorHandler } from './preprocessor.handler.js';
22
23
  export { postprocessorHandler } from './postprocessor.handler.js';
23
24
  export { mcpServerHandler } from './mcp-server.handler.js';
24
25
  export { deviceHandler } from './device.handler.js';
26
+ export { deviceTriggerHandler } from './device-trigger.handler.js';
25
27
  /**
26
28
  * Map of primitive handlers by kind.
27
29
  * 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;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"}
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;AAUhE,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;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,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;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAS9E,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"}
@@ -14,6 +14,7 @@ import { preprocessorHandler } from './preprocessor.handler.js';
14
14
  import { postprocessorHandler } from './postprocessor.handler.js';
15
15
  import { mcpServerHandler } from './mcp-server.handler.js';
16
16
  import { deviceHandler } from './device.handler.js';
17
+ import { deviceTriggerHandler } from './device-trigger.handler.js';
17
18
  // Re-export types and helpers
18
19
  export { isVersionedHandler } from './types.js';
19
20
  // Re-export handler classes (for testing/extension)
@@ -24,6 +25,7 @@ export { PreprocessorHandler } from './preprocessor.handler.js';
24
25
  export { PostprocessorHandler } from './postprocessor.handler.js';
25
26
  export { MCPServerHandler } from './mcp-server.handler.js';
26
27
  export { DeviceHandler } from './device.handler.js';
28
+ export { DeviceTriggerHandler } from './device-trigger.handler.js';
27
29
  // Re-export singleton instances
28
30
  export { skillHandler } from './skill.handler.js';
29
31
  export { webhookHandler } from './webhook.handler.js';
@@ -32,6 +34,7 @@ export { preprocessorHandler } from './preprocessor.handler.js';
32
34
  export { postprocessorHandler } from './postprocessor.handler.js';
33
35
  export { mcpServerHandler } from './mcp-server.handler.js';
34
36
  export { deviceHandler } from './device.handler.js';
37
+ export { deviceTriggerHandler } from './device-trigger.handler.js';
35
38
  /**
36
39
  * Map of primitive handlers by kind.
37
40
  * Note: TOOL kind has no handler — tools are managed as part of skills.
@@ -44,6 +47,7 @@ export const primitiveHandlers = {
44
47
  [PrimitiveKind.POSTPROCESSOR]: postprocessorHandler,
45
48
  [PrimitiveKind.MCP_SERVER]: mcpServerHandler,
46
49
  [PrimitiveKind.DEVICE]: deviceHandler,
50
+ [PrimitiveKind.DEVICE_TRIGGER]: deviceTriggerHandler,
47
51
  };
48
52
  /**
49
53
  * 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;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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"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"}
@@ -795,14 +795,7 @@ export declare class LuaMCPServer {
795
795
  * });
796
796
  * ```
797
797
  */
798
- export interface BatchingConfig {
799
- /** Hold on the first message before processing (ms) to allow rapid follow-ups to batch together. 0 = disabled. */
800
- firstMessageDelayMs?: number;
801
- /** Window to collect subsequent messages while one is in-flight (ms). 0 = batching disabled. */
802
- debounceWindowMs?: number;
803
- /** Maximum messages collected in a single batch. */
804
- maxBatchMessages?: number;
805
- }
798
+ import type { BatchingConfig, GovernanceConfig } from '@lua/shared-types';
806
799
  /**
807
800
  * Type for the agent's model property.
808
801
  *
@@ -845,8 +838,12 @@ export interface LuaAgentConfig {
845
838
  mcpServers?: LuaMCPServer[];
846
839
  /** Array of devices (external hardware that the agent can send commands to and receive triggers from) */
847
840
  devices?: LuaDevice[];
841
+ /** Standalone device triggers — agent-side logic that any device can fire */
842
+ deviceTriggers?: LuaDeviceTrigger[];
848
843
  /** Per-agent message batching/debounce configuration. Overrides platform env var defaults. */
849
844
  batching?: BatchingConfig;
845
+ /** Governance policy configuration. When set, tool calls, preprocessors, and postprocessors are governed. */
846
+ governance?: GovernanceConfig;
850
847
  }
851
848
  /**
852
849
  * LuaAgent class.
@@ -887,7 +884,9 @@ export declare class LuaAgent {
887
884
  private readonly postProcessors;
888
885
  private readonly mcpServers;
889
886
  private readonly devices;
887
+ private readonly deviceTriggers;
890
888
  private readonly batching?;
889
+ private readonly governance?;
891
890
  /**
892
891
  * Creates a new LuaAgent instance.
893
892
  *
@@ -1010,4 +1009,62 @@ export declare class LuaDevice {
1010
1009
  readonly triggers: Record<string, DeviceTriggerConfig>;
1011
1010
  constructor(config: LuaDeviceConfig);
1012
1011
  }
1012
+ /**
1013
+ * Configuration for a standalone device trigger primitive.
1014
+ *
1015
+ * Device triggers represent events fired from a device to an agent.
1016
+ * Unlike triggers defined inline within a `defineDevice()`, standalone
1017
+ * device triggers are first-class primitives that can be compiled,
1018
+ * versioned, and pushed independently.
1019
+ *
1020
+ * @example
1021
+ * ```typescript
1022
+ * import { defineDeviceTrigger } from 'lua-cli';
1023
+ * import { z } from 'zod';
1024
+ *
1025
+ * export const paperLow = defineDeviceTrigger({
1026
+ * name: 'paper-low',
1027
+ * description: 'Fired when printer paper drops below threshold',
1028
+ * payloadSchema: z.object({ level: z.number() }),
1029
+ * execute: async (payload, { agent, device }) => {
1030
+ * await agent.chat(`Printer ${device.name} paper low: ${payload.level}%`);
1031
+ * },
1032
+ * });
1033
+ * ```
1034
+ */
1035
+ export interface LuaDeviceTriggerConfig {
1036
+ /** Trigger name (lowercase, hyphens, e.g., 'paper-low') */
1037
+ name: string;
1038
+ /** Description of when this trigger fires */
1039
+ description?: string;
1040
+ /** Zod schema for trigger payload validation */
1041
+ payloadSchema?: ZodType;
1042
+ /** Function that executes when the trigger fires */
1043
+ execute: (payload: any, context: {
1044
+ agent: any;
1045
+ device: {
1046
+ name: string;
1047
+ };
1048
+ }) => Promise<any>;
1049
+ }
1050
+ /**
1051
+ * Lua Device Trigger class.
1052
+ *
1053
+ * Standalone device trigger primitive. Can be used with either:
1054
+ * - Class-based: `export default new LuaDeviceTrigger({ ... })`
1055
+ * - Function-based: `export const myTrigger = defineDeviceTrigger({ ... })` (preferred)
1056
+ */
1057
+ export declare class LuaDeviceTrigger {
1058
+ config: LuaDeviceTriggerConfig;
1059
+ readonly name: string;
1060
+ readonly description: string;
1061
+ readonly payloadSchema?: ZodType;
1062
+ readonly execute: (payload: any, context: {
1063
+ agent: any;
1064
+ device: {
1065
+ name: string;
1066
+ };
1067
+ }) => Promise<any>;
1068
+ constructor(config: LuaDeviceTriggerConfig);
1069
+ }
1013
1070
  //# sourceMappingURL=skill.d.ts.map