@neuroverseos/governance 0.1.0 → 0.1.2

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 (94) hide show
  1. package/LICENSE.md +190 -0
  2. package/README.md +472 -115
  3. package/dist/adapters/express.cjs +874 -0
  4. package/dist/adapters/express.d.cts +66 -0
  5. package/dist/adapters/express.d.ts +66 -0
  6. package/dist/adapters/express.js +10 -0
  7. package/dist/adapters/index.cjs +1166 -0
  8. package/dist/adapters/index.d.cts +5 -0
  9. package/dist/adapters/index.d.ts +5 -0
  10. package/dist/adapters/index.js +40 -0
  11. package/dist/adapters/langchain.cjs +861 -0
  12. package/dist/adapters/langchain.d.cts +82 -0
  13. package/dist/adapters/langchain.d.ts +82 -0
  14. package/dist/adapters/langchain.js +14 -0
  15. package/dist/adapters/openai.cjs +891 -0
  16. package/dist/adapters/openai.d.cts +92 -0
  17. package/dist/adapters/openai.d.ts +92 -0
  18. package/dist/adapters/openai.js +14 -0
  19. package/dist/adapters/openclaw.cjs +883 -0
  20. package/dist/adapters/openclaw.d.cts +92 -0
  21. package/dist/adapters/openclaw.d.ts +92 -0
  22. package/dist/adapters/openclaw.js +14 -0
  23. package/dist/bootstrap-H4HHKQ5G.js +113 -0
  24. package/dist/build-73KAVHEY.js +308 -0
  25. package/dist/chunk-4NGDRRQH.js +10 -0
  26. package/dist/chunk-B4NF3OLW.js +673 -0
  27. package/dist/chunk-BUWWN2NX.js +192 -0
  28. package/dist/chunk-CROPZ75A.js +107 -0
  29. package/dist/chunk-D7BGWV2J.js +620 -0
  30. package/dist/chunk-EIUHJXBB.js +340 -0
  31. package/dist/chunk-EQXFOKH2.js +85 -0
  32. package/dist/chunk-FYPYZFV5.js +187 -0
  33. package/dist/chunk-FYS2CBUW.js +304 -0
  34. package/dist/chunk-FZQCRGUU.js +115 -0
  35. package/dist/chunk-I3RRAYK2.js +11 -0
  36. package/dist/chunk-ITJ3LCPG.js +225 -0
  37. package/dist/chunk-M3TZFGHO.js +79 -0
  38. package/dist/chunk-MWDQ4MJB.js +11 -0
  39. package/dist/chunk-O5OMJMIE.js +590 -0
  40. package/dist/chunk-T4X42QXC.js +121 -0
  41. package/dist/chunk-XPDMYECO.js +642 -0
  42. package/dist/chunk-Z2S2HIV5.js +100 -0
  43. package/dist/cli/neuroverse.cjs +5864 -0
  44. package/dist/cli/neuroverse.d.cts +1 -0
  45. package/dist/cli/neuroverse.d.ts +1 -0
  46. package/dist/cli/neuroverse.js +128 -0
  47. package/dist/configure-ai-46JVG56I.js +129 -0
  48. package/dist/derive-6NAEWLM5.js +150 -0
  49. package/dist/explain-3B3VB6TL.js +69 -0
  50. package/dist/guard-67Y66P3I.js +82 -0
  51. package/dist/guard-contract-D_RQz9kt.d.cts +529 -0
  52. package/dist/guard-contract-D_RQz9kt.d.ts +529 -0
  53. package/dist/impact-CHERK3O6.js +57 -0
  54. package/dist/improve-YG6I6ERG.js +84 -0
  55. package/dist/index.cjs +4227 -0
  56. package/dist/index.d.cts +1147 -0
  57. package/dist/index.d.ts +1139 -25
  58. package/dist/index.js +318 -1159
  59. package/dist/init-Z66T6TDI.js +142 -0
  60. package/dist/simulate-ETHHINZ4.js +107 -0
  61. package/dist/trace-3YODSSIP.js +164 -0
  62. package/dist/validate-UVE6GKQU.js +72 -0
  63. package/dist/validate-engine-657D75OG.js +6 -0
  64. package/dist/world-WLNHL5XC.js +298 -0
  65. package/dist/worlds/derivation-world.nv-world.md +278 -0
  66. package/package.json +74 -26
  67. package/LICENSE +0 -21
  68. package/dist/audit-logger.d.ts +0 -38
  69. package/dist/audit-logger.d.ts.map +0 -1
  70. package/dist/audit-logger.js +0 -100
  71. package/dist/audit-logger.js.map +0 -1
  72. package/dist/condition-engine.d.ts +0 -16
  73. package/dist/condition-engine.d.ts.map +0 -1
  74. package/dist/condition-engine.js +0 -186
  75. package/dist/condition-engine.js.map +0 -1
  76. package/dist/drift-monitor.d.ts +0 -81
  77. package/dist/drift-monitor.d.ts.map +0 -1
  78. package/dist/drift-monitor.js +0 -228
  79. package/dist/drift-monitor.js.map +0 -1
  80. package/dist/governance-engine.d.ts +0 -131
  81. package/dist/governance-engine.d.ts.map +0 -1
  82. package/dist/governance-engine.js +0 -660
  83. package/dist/governance-engine.js.map +0 -1
  84. package/dist/index.d.ts.map +0 -1
  85. package/dist/index.js.map +0 -1
  86. package/dist/types.d.ts +0 -196
  87. package/dist/types.d.ts.map +0 -1
  88. package/dist/types.js +0 -9
  89. package/dist/types.js.map +0 -1
  90. package/dist/world-bootstrap.d.ts +0 -31
  91. package/dist/world-bootstrap.d.ts.map +0 -1
  92. package/dist/world-bootstrap.js +0 -415
  93. package/dist/world-bootstrap.js.map +0 -1
  94. package/openclaw.plugin.json +0 -59
@@ -1,415 +0,0 @@
1
- "use strict";
2
- /**
3
- * World Bootstrap — Generate structured world.json from workspace .md files
4
- *
5
- * Scans all .md files in the workspace dynamically and produces a
6
- * world.json matching the governance runtime spec:
7
- * kernel + invariants + guards + rules + roles + metadata
8
- *
9
- * No filename assumptions — any .md file contributes to the world.
10
- * This is deterministic extraction — no AI needed.
11
- * The output matches the GovernanceWorld type exactly.
12
- */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.bootstrapWorldFromMarkdown = bootstrapWorldFromMarkdown;
15
- exports.checkMdDrift = checkMdDrift;
16
- exports.hasMdDrift = hasMdDrift;
17
- const crypto_1 = require("crypto");
18
- // ────────────────────────────────────────────────────────────────────────
19
- // Constraint Patterns
20
- // ────────────────────────────────────────────────────────────────────────
21
- const CONSTRAINT_PATTERNS = [
22
- { regex: /must\s+never\s+(.+)/gi, enforcement: 'block' },
23
- { regex: /never\s+(.+)/gi, enforcement: 'block' },
24
- { regex: /forbidden[:\s]+(.+)/gi, enforcement: 'block' },
25
- { regex: /prohibited[:\s]+(.+)/gi, enforcement: 'block' },
26
- { regex: /do\s+not\s+(.+)/gi, enforcement: 'block' },
27
- { regex: /shall\s+not\s+(.+)/gi, enforcement: 'block' },
28
- { regex: /under\s+no\s+circumstances[,:\s]+(.+)/gi, enforcement: 'block' },
29
- { regex: /must\s+always\s+(.+)/gi, enforcement: 'pause' },
30
- { regex: /always\s+(.+)/gi, enforcement: 'pause' },
31
- { regex: /requires?\s+(?:human\s+)?approval[:\s]+(.+)/gi, enforcement: 'pause' },
32
- ];
33
- const RISK_KEYWORDS = [
34
- { word: 'cautious', score: 0.3 },
35
- { word: 'conservative', score: 0.2 },
36
- { word: 'aggressive', score: 0.7 },
37
- { word: 'careful', score: 0.3 },
38
- { word: 'bold', score: 0.8 },
39
- { word: 'safe', score: 0.2 },
40
- { word: 'risky', score: 0.7 },
41
- { word: 'moderate', score: 0.5 },
42
- { word: 'strict', score: 0.2 },
43
- { word: 'flexible', score: 0.6 },
44
- { word: 'permissive', score: 0.7 },
45
- { word: 'locked down', score: 0.1 },
46
- ];
47
- const TOOL_RESTRICTION_PATTERNS = [
48
- { regex: /(?:do not|never|cannot|must not)\s+(?:use|call|invoke|execute)\s+(?:the\s+)?(\w+)/gi, type: 'block' },
49
- { regex: /(\w+)\s+(?:tool|command|function)\s+(?:is\s+)?(?:blocked|forbidden|prohibited|disabled)/gi, type: 'block' },
50
- { regex: /(\w+)\s+(?:requires?|needs?)\s+(?:approval|review|confirmation)/gi, type: 'pause' },
51
- ];
52
- const ROLE_PATTERNS = [
53
- { regex: /you\s+are\s+(?:a|an|the)\s+(.+?)(?:\.|$)/gim },
54
- { regex: /(?:role|acting as|serving as)[:\s]+(.+?)(?:\.|$)/gim },
55
- { regex: /(?:agent|bot|assistant)\s+(?:name|id|role)[:\s]+(.+?)(?:\.|$)/gim },
56
- ];
57
- // ────────────────────────────────────────────────────────────────────────
58
- // Bootstrap
59
- // ────────────────────────────────────────────────────────────────────────
60
- /**
61
- * Generate a structured governance world from OpenClaw .md files.
62
- * Output matches the GovernanceWorld type and the runtime spec exactly.
63
- */
64
- function bootstrapWorldFromMarkdown(mdFiles) {
65
- const allText = Object.values(mdFiles).join('\n\n');
66
- const fileNames = Object.keys(mdFiles);
67
- // Extract governance structures
68
- const invariants = extractInvariants(allText);
69
- const guards = extractGuards(allText);
70
- const rules = extractRules(allText);
71
- const roles = extractRoles(mdFiles);
72
- // Determine enforcement mode from risk tolerance
73
- const riskTolerance = assessRiskTolerance(allText);
74
- const enforcementMode = riskTolerance < 0.3 ? 'strict'
75
- : riskTolerance > 0.6 ? 'permissive'
76
- : 'standard';
77
- return {
78
- version: '1.0.0',
79
- kernel: {
80
- enforcementMode,
81
- defaultVerdict: 'allow',
82
- evaluationOrder: ['invariants', 'guards', 'rules'],
83
- sessionOverridesAllowed: enforcementMode !== 'strict',
84
- },
85
- invariants,
86
- guards,
87
- rules,
88
- roles,
89
- metadata: {
90
- name: extractName(mdFiles),
91
- bootstrappedFrom: fileNames,
92
- bootstrappedAt: Date.now(),
93
- mdHashes: hashMdFiles(mdFiles),
94
- },
95
- };
96
- }
97
- // ────────────────────────────────────────────────────────────────────────
98
- // Extractors
99
- // ────────────────────────────────────────────────────────────────────────
100
- function extractName(mdFiles) {
101
- // Search all files for a title — first H1 heading or name/title declaration wins
102
- for (const content of Object.values(mdFiles)) {
103
- const firstLines = content.split('\n').slice(0, 10);
104
- for (const line of firstLines) {
105
- const titleMatch = line.match(/^#\s+(.+)/);
106
- if (titleMatch)
107
- return titleMatch[1].trim();
108
- const nameMatch = line.match(/(?:name|title|agent)[:\s]+(.+)/i);
109
- if (nameMatch)
110
- return nameMatch[1].trim();
111
- }
112
- }
113
- return 'OpenClaw Agent';
114
- }
115
- /**
116
- * Extract invariants — non-overridable BLOCK rules.
117
- * Only "block" level constraints become invariants.
118
- */
119
- function extractInvariants(text) {
120
- const invariants = [];
121
- const seen = new Set();
122
- let counter = 0;
123
- for (const { regex, enforcement } of CONSTRAINT_PATTERNS) {
124
- if (enforcement !== 'block')
125
- continue;
126
- const cloned = new RegExp(regex.source, regex.flags);
127
- for (const match of text.matchAll(cloned)) {
128
- const desc = match[1]?.trim();
129
- if (!desc || desc.length < 5 || desc.length > 200)
130
- continue;
131
- const normalized = desc.toLowerCase();
132
- if (seen.has(normalized))
133
- continue;
134
- seen.add(normalized);
135
- counter++;
136
- const patterns = extractKeyPhrases(desc);
137
- invariants.push({
138
- id: `no-${slugify(desc.slice(0, 40))}-${counter}`,
139
- description: desc,
140
- scope: ['tool_call'],
141
- condition: {
142
- field: 'intent',
143
- operator: patterns.length > 1 ? 'contains_any' : 'contains',
144
- value: patterns.length > 1 ? patterns : patterns[0] ?? desc.toLowerCase(),
145
- },
146
- enforcement: 'block',
147
- });
148
- }
149
- }
150
- return invariants.slice(0, 15);
151
- }
152
- /**
153
- * Extract guards — scoped rules that PAUSE or BLOCK.
154
- * Includes both constraint-derived and tool-restriction-derived guards.
155
- */
156
- function extractGuards(text) {
157
- const guards = [];
158
- const seen = new Set();
159
- let counter = 0;
160
- // From constraint patterns (non-block become guards with pause enforcement)
161
- for (const { regex, enforcement } of CONSTRAINT_PATTERNS) {
162
- if (enforcement === 'block')
163
- continue; // these became invariants
164
- const cloned = new RegExp(regex.source, regex.flags);
165
- for (const match of text.matchAll(cloned)) {
166
- const desc = match[1]?.trim();
167
- if (!desc || desc.length < 5 || desc.length > 200)
168
- continue;
169
- const normalized = desc.toLowerCase();
170
- if (seen.has(normalized))
171
- continue;
172
- seen.add(normalized);
173
- counter++;
174
- const patterns = extractKeyPhrases(desc);
175
- guards.push({
176
- id: `guard-${slugify(desc.slice(0, 40))}-${counter}`,
177
- description: desc,
178
- scope: ['tool_call'],
179
- appliesTo: [],
180
- condition: {
181
- field: 'intent',
182
- operator: patterns.length > 1 ? 'contains_any' : 'contains',
183
- value: patterns.length > 1 ? patterns : patterns[0] ?? desc.toLowerCase(),
184
- },
185
- enforcement: 'pause',
186
- requiresApproval: true,
187
- });
188
- }
189
- }
190
- // From tool restriction patterns → tool-specific guards
191
- for (const { regex, type } of TOOL_RESTRICTION_PATTERNS) {
192
- const cloned = new RegExp(regex.source, regex.flags);
193
- for (const match of text.matchAll(cloned)) {
194
- const tool = match[1]?.trim().toLowerCase();
195
- if (!tool || tool.length < 2 || tool.length > 30)
196
- continue;
197
- if (seen.has(tool))
198
- continue;
199
- seen.add(tool);
200
- counter++;
201
- guards.push({
202
- id: `tool-restriction-${tool}-${counter}`,
203
- description: `Restricted tool: ${tool}`,
204
- scope: ['tool_call'],
205
- appliesTo: [tool],
206
- condition: {
207
- field: 'tool',
208
- operator: '==',
209
- value: tool,
210
- },
211
- enforcement: type,
212
- requiresApproval: type === 'pause',
213
- });
214
- }
215
- }
216
- return guards.slice(0, 20);
217
- }
218
- /**
219
- * Extract rules — contextual triggers with verdict effects.
220
- * These are softer than guards — things like "production requires review".
221
- */
222
- function extractRules(text) {
223
- const rules = [];
224
- // Production environment rule (common pattern)
225
- if (/production|prod\s+env/i.test(text)) {
226
- rules.push({
227
- id: 'prod-write-requires-review',
228
- description: 'Production environment requires review',
229
- trigger: {
230
- field: 'environment',
231
- operator: '==',
232
- value: 'production',
233
- },
234
- effect: { verdict: 'pause' },
235
- });
236
- }
237
- // Destructive operations rule (common pattern)
238
- if (/destruct|dangerous|risky\s+operation/i.test(text)) {
239
- rules.push({
240
- id: 'destructive-ops-pause',
241
- description: 'Destructive operations require approval',
242
- trigger: {
243
- field: 'intent',
244
- operator: 'matches_pattern',
245
- value: ['rm\\s+-rf', 'drop\\s+table', 'truncate', 'delete.*--force'],
246
- },
247
- effect: { verdict: 'pause' },
248
- });
249
- }
250
- // External communication rule
251
- if (/external|outside|third.?party|api\s+call/i.test(text)) {
252
- rules.push({
253
- id: 'external-comms-pause',
254
- description: 'External communication requires approval',
255
- trigger: {
256
- field: 'intent',
257
- operator: 'contains_any',
258
- value: ['send email', 'post to', 'publish', 'deploy'],
259
- },
260
- effect: { verdict: 'pause' },
261
- });
262
- }
263
- return rules;
264
- }
265
- /**
266
- * Extract roles from identity/role declarations.
267
- */
268
- function extractRoles(mdFiles) {
269
- const roles = [];
270
- const allText = Object.values(mdFiles).join('\n\n');
271
- const seen = new Set();
272
- for (const { regex } of ROLE_PATTERNS) {
273
- const cloned = new RegExp(regex.source, regex.flags);
274
- for (const match of allText.matchAll(cloned)) {
275
- const roleName = match[1]?.trim();
276
- if (!roleName || roleName.length < 3 || roleName.length > 60)
277
- continue;
278
- const normalized = roleName.toLowerCase();
279
- if (seen.has(normalized))
280
- continue;
281
- seen.add(normalized);
282
- roles.push({
283
- id: slugify(roleName),
284
- name: roleName,
285
- canDo: ['read', 'write', 'shell'],
286
- cannotDo: [],
287
- requiresApproval: false,
288
- });
289
- }
290
- }
291
- // Default role if none found
292
- if (roles.length === 0) {
293
- roles.push({
294
- id: 'executor',
295
- name: 'Executor',
296
- canDo: ['read', 'write', 'shell'],
297
- cannotDo: [],
298
- requiresApproval: false,
299
- });
300
- }
301
- return roles.slice(0, 10);
302
- }
303
- // ────────────────────────────────────────────────────────────────────────
304
- // Helpers
305
- // ────────────────────────────────────────────────────────────────────────
306
- function assessRiskTolerance(text) {
307
- const lower = text.toLowerCase();
308
- let totalScore = 0;
309
- let matchCount = 0;
310
- for (const { word, score } of RISK_KEYWORDS) {
311
- if (lower.includes(word)) {
312
- totalScore += score;
313
- matchCount++;
314
- }
315
- }
316
- if (matchCount === 0)
317
- return 0.5;
318
- return totalScore / matchCount;
319
- }
320
- /**
321
- * Extract key phrases from a description for use as condition values.
322
- */
323
- function extractKeyPhrases(desc) {
324
- return desc
325
- .toLowerCase()
326
- .split(/[,;]/)
327
- .map(s => s.trim())
328
- .filter(s => s.length > 3);
329
- }
330
- /**
331
- * Convert a string to a kebab-case slug for use as IDs.
332
- */
333
- function slugify(str) {
334
- return str
335
- .toLowerCase()
336
- .replace(/[^a-z0-9]+/g, '-')
337
- .replace(/^-+|-+$/g, '')
338
- .slice(0, 50);
339
- }
340
- // ────────────────────────────────────────────────────────────────────────
341
- // Content Hashing — Drift Detection
342
- // ────────────────────────────────────────────────────────────────────────
343
- /**
344
- * SHA-256 hash of file content. Deterministic, fast, collision-resistant.
345
- */
346
- function hashContent(content) {
347
- return (0, crypto_1.createHash)('sha256').update(content).digest('hex');
348
- }
349
- /**
350
- * Hash all .md files at bootstrap time. Stored in world.json metadata.
351
- */
352
- function hashMdFiles(mdFiles) {
353
- const hashes = {};
354
- for (const [name, content] of Object.entries(mdFiles)) {
355
- hashes[name] = hashContent(content);
356
- }
357
- return hashes;
358
- }
359
- /**
360
- * Compare current .md file contents against stored hashes.
361
- * Returns list of changed/added/removed files, or empty array if no drift.
362
- */
363
- function checkMdDrift(workspaceDir, storedHashes) {
364
- const { readdirSync, readFileSync } = require('fs');
365
- const { join } = require('path');
366
- const changed = [];
367
- const added = [];
368
- const removed = [];
369
- // Scan workspace for all .md files
370
- let currentFiles = [];
371
- try {
372
- currentFiles = readdirSync(workspaceDir)
373
- .filter((f) => f.toLowerCase().endsWith('.md'));
374
- }
375
- catch {
376
- // Workspace unreadable — treat all stored hashes as removed
377
- return { changed, added, removed: Object.keys(storedHashes) };
378
- }
379
- const seen = new Set();
380
- // Check current files against stored hashes
381
- for (const file of currentFiles) {
382
- seen.add(file);
383
- const fullPath = join(workspaceDir, file);
384
- const hadHash = file in storedHashes;
385
- try {
386
- const currentHash = hashContent(readFileSync(fullPath, 'utf-8'));
387
- if (hadHash) {
388
- if (currentHash !== storedHashes[file]) {
389
- changed.push(file);
390
- }
391
- }
392
- else {
393
- added.push(file);
394
- }
395
- }
396
- catch {
397
- // File unreadable — skip
398
- }
399
- }
400
- // Detect removed files (were hashed before, no longer present)
401
- for (const file of Object.keys(storedHashes)) {
402
- if (!seen.has(file)) {
403
- removed.push(file);
404
- }
405
- }
406
- return { changed, added, removed };
407
- }
408
- /**
409
- * Quick boolean check: has anything drifted?
410
- */
411
- function hasMdDrift(workspaceDir, storedHashes) {
412
- const drift = checkMdDrift(workspaceDir, storedHashes);
413
- return drift.changed.length > 0 || drift.added.length > 0 || drift.removed.length > 0;
414
- }
415
- //# sourceMappingURL=world-bootstrap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"world-bootstrap.js","sourceRoot":"","sources":["../world-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- {
2
- "id": "neuroverseos-governance",
3
- "name": "NeuroVerse Governance",
4
- "version": "1.3.0",
5
- "description": "Governance plugin for OpenClaw. Structured condition engine. Deterministic verdicts: ALLOW / PAUSE / BLOCK. Audit log. No AI in enforcement.",
6
- "author": "NeuroVerseOS",
7
- "homepage": "https://www.neuroverseos.com",
8
- "kind": "lifecycle",
9
- "tags": ["governance", "guardrails", "policy", "safety"],
10
- "configSchema": {
11
- "type": "object",
12
- "additionalProperties": false,
13
- "properties": {
14
- "worldPath": {
15
- "type": "string",
16
- "description": "Path to world.json governance file (default: .neuroverseos/world.json)"
17
- },
18
- "enforcement": {
19
- "type": "string",
20
- "enum": ["standard", "strict", "permissive"],
21
- "description": "Default enforcement level"
22
- },
23
- "observeFirst": {
24
- "type": "boolean",
25
- "description": "Start in observe mode (ALLOW all, record patterns) before enforcing"
26
- },
27
- "driftTracking": {
28
- "type": "boolean",
29
- "description": "Enable background drift monitoring"
30
- },
31
- "autoProposals": {
32
- "type": "boolean",
33
- "description": "Allow governance engine to propose world amendments"
34
- },
35
- "verbose": {
36
- "type": "boolean",
37
- "description": "Log all verdicts including ALLOW. Default: false (only BLOCK/PAUSE print)"
38
- },
39
- "autoAllow": {
40
- "type": "boolean",
41
- "description": "Auto-approve all PAUSE decisions. For CI/headless environments. Default: false"
42
- },
43
- "environment": {
44
- "type": "string",
45
- "description": "Override environment detection (development, production, staging)"
46
- }
47
- }
48
- },
49
- "uiHints": {
50
- "worldPath": { "label": "World File Path", "placeholder": ".neuroverseos/world.json" },
51
- "enforcement": { "label": "Enforcement Level" },
52
- "observeFirst": { "label": "Observe First Mode" },
53
- "driftTracking": { "label": "Drift Tracking" },
54
- "autoProposals": { "label": "Auto Proposals" },
55
- "verbose": { "label": "Verbose Logging" },
56
- "autoAllow": { "label": "Auto-Allow Pauses" },
57
- "environment": { "label": "Environment Override", "placeholder": "development" }
58
- }
59
- }