memoryblock 0.1.4 → 0.1.5

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/README.md +73 -115
  2. package/bin/mblk.js +68 -71
  3. package/dist/commands/create.d.ts +2 -0
  4. package/dist/commands/create.d.ts.map +1 -0
  5. package/dist/commands/create.js +48 -0
  6. package/dist/commands/create.js.map +1 -0
  7. package/dist/commands/delete.d.ts +5 -0
  8. package/dist/commands/delete.d.ts.map +1 -0
  9. package/dist/commands/delete.js +147 -0
  10. package/dist/commands/delete.js.map +1 -0
  11. package/dist/commands/init.d.ts +9 -0
  12. package/dist/commands/init.d.ts.map +1 -0
  13. package/dist/commands/init.js +209 -0
  14. package/dist/commands/init.js.map +1 -0
  15. package/dist/commands/permissions.d.ts +13 -0
  16. package/dist/commands/permissions.d.ts.map +1 -0
  17. package/dist/commands/permissions.js +60 -0
  18. package/dist/commands/permissions.js.map +1 -0
  19. package/dist/commands/plugin-settings.d.ts +6 -0
  20. package/dist/commands/plugin-settings.d.ts.map +1 -0
  21. package/dist/commands/plugin-settings.js +118 -0
  22. package/dist/commands/plugin-settings.js.map +1 -0
  23. package/dist/commands/plugins.d.ts +3 -0
  24. package/dist/commands/plugins.d.ts.map +1 -0
  25. package/dist/commands/plugins.js +83 -0
  26. package/dist/commands/plugins.js.map +1 -0
  27. package/dist/commands/reset.d.ts +8 -0
  28. package/dist/commands/reset.d.ts.map +1 -0
  29. package/dist/commands/reset.js +96 -0
  30. package/dist/commands/reset.js.map +1 -0
  31. package/dist/commands/server.d.ts +25 -0
  32. package/dist/commands/server.d.ts.map +1 -0
  33. package/dist/commands/server.js +295 -0
  34. package/dist/commands/server.js.map +1 -0
  35. package/dist/commands/service.d.ts +18 -0
  36. package/dist/commands/service.d.ts.map +1 -0
  37. package/dist/commands/service.js +309 -0
  38. package/dist/commands/service.js.map +1 -0
  39. package/dist/commands/start.d.ts +11 -0
  40. package/dist/commands/start.d.ts.map +1 -0
  41. package/dist/commands/start.js +794 -0
  42. package/dist/commands/start.js.map +1 -0
  43. package/dist/commands/status.d.ts +2 -0
  44. package/dist/commands/status.d.ts.map +1 -0
  45. package/dist/commands/status.js +78 -0
  46. package/dist/commands/status.js.map +1 -0
  47. package/dist/commands/stop.d.ts +9 -0
  48. package/dist/commands/stop.d.ts.map +1 -0
  49. package/dist/commands/stop.js +83 -0
  50. package/dist/commands/stop.js.map +1 -0
  51. package/dist/commands/web.d.ts +5 -0
  52. package/dist/commands/web.d.ts.map +1 -0
  53. package/dist/commands/web.js +63 -0
  54. package/dist/commands/web.js.map +1 -0
  55. package/dist/commands.d.ts +7 -0
  56. package/dist/commands.d.ts.map +1 -0
  57. package/dist/commands.js +7 -0
  58. package/dist/commands.js.map +1 -0
  59. package/dist/constants.d.ts +41 -0
  60. package/dist/constants.d.ts.map +1 -0
  61. package/dist/constants.js +81 -0
  62. package/dist/constants.js.map +1 -0
  63. package/dist/entry.d.ts +9 -0
  64. package/dist/entry.d.ts.map +1 -0
  65. package/dist/entry.js +345 -0
  66. package/dist/entry.js.map +1 -0
  67. package/package.json +32 -11
  68. package/dist/engine/agent.d.ts +0 -15
  69. package/dist/engine/agent.d.ts.map +0 -1
  70. package/dist/engine/agent.js +0 -19
  71. package/dist/engine/agent.js.map +0 -1
  72. package/dist/engine/conversation-log.d.ts +0 -35
  73. package/dist/engine/conversation-log.d.ts.map +0 -1
  74. package/dist/engine/conversation-log.js +0 -83
  75. package/dist/engine/conversation-log.js.map +0 -1
  76. package/dist/engine/cost-tracker.d.ts +0 -52
  77. package/dist/engine/cost-tracker.d.ts.map +0 -1
  78. package/dist/engine/cost-tracker.js +0 -110
  79. package/dist/engine/cost-tracker.js.map +0 -1
  80. package/dist/engine/gatekeeper.d.ts +0 -20
  81. package/dist/engine/gatekeeper.d.ts.map +0 -1
  82. package/dist/engine/gatekeeper.js +0 -43
  83. package/dist/engine/gatekeeper.js.map +0 -1
  84. package/dist/engine/memory.d.ts +0 -28
  85. package/dist/engine/memory.d.ts.map +0 -1
  86. package/dist/engine/memory.js +0 -69
  87. package/dist/engine/memory.js.map +0 -1
  88. package/dist/engine/monitor.d.ts +0 -81
  89. package/dist/engine/monitor.d.ts.map +0 -1
  90. package/dist/engine/monitor.js +0 -610
  91. package/dist/engine/monitor.js.map +0 -1
  92. package/dist/engine/prompts.d.ts +0 -31
  93. package/dist/engine/prompts.d.ts.map +0 -1
  94. package/dist/engine/prompts.js +0 -93
  95. package/dist/engine/prompts.js.map +0 -1
  96. package/dist/index.d.ts +0 -10
  97. package/dist/index.d.ts.map +0 -1
  98. package/dist/index.js +0 -14
  99. package/dist/index.js.map +0 -1
  100. package/dist/utils/config.d.ts +0 -24
  101. package/dist/utils/config.d.ts.map +0 -1
  102. package/dist/utils/config.js +0 -86
  103. package/dist/utils/config.js.map +0 -1
  104. package/dist/utils/fs.d.ts +0 -18
  105. package/dist/utils/fs.d.ts.map +0 -1
  106. package/dist/utils/fs.js +0 -65
  107. package/dist/utils/fs.js.map +0 -1
  108. package/dist/utils/logger.d.ts +0 -12
  109. package/dist/utils/logger.d.ts.map +0 -1
  110. package/dist/utils/logger.js +0 -40
  111. package/dist/utils/logger.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Interactive onboarding wizard.
3
+ * Multi-step setup: providers → channels → plugins → API keys → first block.
4
+ * Uses @clack/prompts for styled terminal UI.
5
+ */
6
+ export declare function initCommand(options?: {
7
+ nonInteractive?: boolean;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4NvF"}
@@ -0,0 +1,209 @@
1
+ import * as p from '@clack/prompts';
2
+ import chalk from 'chalk';
3
+ import { ensureDir, writeJson } from '@memoryblock/core';
4
+ import { getWsRoot, getConfigPath, getAuthPath, isInitialized, } from '@memoryblock/core';
5
+ import { GlobalConfigSchema } from '@memoryblock/types';
6
+ import { log } from '@memoryblock/core';
7
+ import { PROVIDERS, CHANNELS, PLUGINS, PROVIDER_AUTH, CHANNEL_AUTH } from '../constants.js';
8
+ // Brand accent
9
+ const ACCENT = chalk.hex('#805AD5');
10
+ const DIM = chalk.dim;
11
+ /**
12
+ * Interactive onboarding wizard.
13
+ * Multi-step setup: providers → channels → plugins → API keys → first block.
14
+ * Uses @clack/prompts for styled terminal UI.
15
+ */
16
+ export async function initCommand(options) {
17
+ const wsDir = getWsRoot();
18
+ // Non-interactive: create defaults and exit
19
+ if (options?.nonInteractive) {
20
+ await ensureDir(wsDir);
21
+ const defaultConfig = GlobalConfigSchema.parse({
22
+ blocksDir: './blocks'
23
+ });
24
+ await writeJson(getConfigPath(), defaultConfig);
25
+ await writeJson(getAuthPath(), {
26
+ aws: { accessKeyId: '', secretAccessKey: '', region: 'us-east-1' },
27
+ anthropic: { apiKey: '' },
28
+ openai: { apiKey: '' },
29
+ gemini: { apiKey: '' },
30
+ telegram: { botToken: '', chatId: '' },
31
+ brave: { apiKey: '' }
32
+ });
33
+ log.brand('Initialized (non-interactive)');
34
+ log.success(`Workspace: ${wsDir}`);
35
+ log.success(`Config: ${getConfigPath()}`);
36
+ return;
37
+ }
38
+ const alreadyInit = await isInitialized();
39
+ // Welcome
40
+ console.log('');
41
+ log.banner();
42
+ console.log(DIM(' Deploy isolated AI workspaces on your machine.\n'));
43
+ p.intro(chalk.bold('Setup Wizard'));
44
+ if (alreadyInit) {
45
+ const proceed = await p.confirm({
46
+ message: 'Already configured globally. Re-run setup?',
47
+ initialValue: false,
48
+ });
49
+ if (p.isCancel(proceed) || !proceed) {
50
+ p.outro('Setup cancelled.');
51
+ return;
52
+ }
53
+ }
54
+ // ─── Step 1: Providers ───────────────────────────────
55
+ const selectedProviders = await p.multiselect({
56
+ message: 'Which providers do you want to use?',
57
+ options: PROVIDERS,
58
+ initialValues: ['bedrock'],
59
+ required: true,
60
+ });
61
+ if (p.isCancel(selectedProviders)) {
62
+ p.outro('Setup cancelled.');
63
+ return;
64
+ }
65
+ // ─── Step 2: Channels ───────────────────────────────
66
+ const selectedChannels = await p.multiselect({
67
+ message: 'Which channels do you want to enable?',
68
+ options: CHANNELS.map(ch => ({
69
+ ...ch,
70
+ label: (ch.value === 'cli' || ch.value === 'web') ? `${ch.label} (always on)` : ch.label,
71
+ })),
72
+ initialValues: ['cli', 'web'],
73
+ required: true,
74
+ });
75
+ if (p.isCancel(selectedChannels)) {
76
+ p.outro('Setup cancelled.');
77
+ return;
78
+ }
79
+ // ─── Step 3: Skills & Plugins ───────────────────────
80
+ p.log.info(`${chalk.green('✓')} Core skills (file ops, shell, dev) — always available`);
81
+ p.log.info(`${chalk.green('✓')} Multi-Agent Orchestration — always available`);
82
+ let selectedPlugins = [];
83
+ if (PLUGINS.length > 0) {
84
+ selectedPlugins = await p.multiselect({
85
+ message: 'Select additional skills & plugins to install:',
86
+ options: PLUGINS.map(pl => ({
87
+ value: pl.value,
88
+ label: pl.label,
89
+ hint: pl.hint,
90
+ })),
91
+ required: false,
92
+ });
93
+ if (p.isCancel(selectedPlugins)) {
94
+ p.outro('Setup cancelled.');
95
+ return;
96
+ }
97
+ }
98
+ // ─── Step 4: API Keys ───────────────────────────────
99
+ const authData = {};
100
+ for (const provider of selectedProviders) {
101
+ const providerAuth = PROVIDER_AUTH[provider];
102
+ if (!providerAuth || providerAuth.fields.length === 0)
103
+ continue;
104
+ const providerLabel = PROVIDERS.find(p => p.value === provider)?.label || provider;
105
+ p.log.step(`${providerLabel} credentials`);
106
+ const data = {};
107
+ for (const field of providerAuth.fields) {
108
+ const value = await p.text({
109
+ message: field.label,
110
+ placeholder: field.key === 'region' ? 'us-east-1' : '',
111
+ defaultValue: field.key === 'region' ? 'us-east-1' : undefined,
112
+ });
113
+ if (p.isCancel(value)) {
114
+ p.outro('Setup cancelled.');
115
+ return;
116
+ }
117
+ data[field.key] = value || '';
118
+ }
119
+ authData[provider === 'bedrock' ? 'aws' : provider] = data;
120
+ }
121
+ // Channel auth (only telegram has auth currently)
122
+ for (const channel of selectedChannels) {
123
+ const fields = CHANNEL_AUTH[channel];
124
+ if (!fields)
125
+ continue;
126
+ const channelLabel = CHANNELS.find(c => c.value === channel)?.label || channel;
127
+ p.log.step(`${channelLabel} credentials`);
128
+ const data = {};
129
+ for (const field of fields) {
130
+ const value = await p.text({
131
+ message: field.label,
132
+ placeholder: field.secret ? '' : 'optional',
133
+ });
134
+ if (p.isCancel(value)) {
135
+ p.outro('Setup cancelled.');
136
+ return;
137
+ }
138
+ data[field.key] = value || '';
139
+ }
140
+ authData[channel] = data;
141
+ }
142
+ // ─── Step 5: Connection Testing ─────────────────────
143
+ const s = p.spinner();
144
+ const results = [];
145
+ // Test Bedrock
146
+ if (authData.aws?.accessKeyId) {
147
+ s.start('Testing Bedrock connection...');
148
+ try {
149
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
150
+ // @ts-ignore — dynamic import, may not be installed
151
+ const { BedrockRuntimeClient, ConverseCommand } = await import('@aws-sdk/client-bedrock-runtime');
152
+ const client = new BedrockRuntimeClient({
153
+ region: authData.aws.region || 'us-east-1',
154
+ credentials: { accessKeyId: authData.aws.accessKeyId, secretAccessKey: authData.aws.secretAccessKey },
155
+ });
156
+ await client.send(new ConverseCommand({
157
+ modelId: 'anthropic.claude-3-haiku-20240307-v1:0',
158
+ messages: [{ role: 'user', content: [{ text: 'hi' }] }],
159
+ inferenceConfig: { maxTokens: 1 },
160
+ }));
161
+ results.push({ name: 'Bedrock', ok: true });
162
+ s.stop('Bedrock ✓');
163
+ }
164
+ catch (err) {
165
+ // AccessDeniedException means credentials ARE valid, just model not enabled
166
+ const isAccessIssue = err?.name === 'AccessDeniedException' || err?.Code === 'AccessDeniedException';
167
+ if (isAccessIssue) {
168
+ results.push({ name: 'Bedrock', ok: true });
169
+ s.stop('Bedrock ✓ (credentials valid, enable models in AWS console)');
170
+ }
171
+ else {
172
+ results.push({ name: 'Bedrock', ok: false });
173
+ s.stop('Bedrock ✗ (check credentials later)');
174
+ }
175
+ }
176
+ }
177
+ // Test Telegram
178
+ if (authData.telegram?.botToken) {
179
+ s.start('Testing Telegram bot...');
180
+ try {
181
+ const res = await fetch(`https://api.telegram.org/bot${authData.telegram.botToken}/getMe`);
182
+ const data = await res.json();
183
+ results.push({ name: 'Telegram', ok: data.ok });
184
+ s.stop(data.ok ? 'Telegram ✓' : 'Telegram ✗');
185
+ }
186
+ catch {
187
+ results.push({ name: 'Telegram', ok: false });
188
+ s.stop('Telegram ✗');
189
+ }
190
+ }
191
+ // ─── Step 6: Save Configuration ─────────────────────
192
+ await ensureDir(wsDir);
193
+ const defaultConfig = GlobalConfigSchema.parse({
194
+ blocksDir: './blocks',
195
+ });
196
+ await writeJson(getConfigPath(), defaultConfig);
197
+ await writeJson(getAuthPath(), authData);
198
+ // ─── Done ───────────────────────────────────────────
199
+ console.log('');
200
+ p.note([
201
+ ...results.map(r => `${r.ok ? chalk.green('✓') : chalk.yellow('○')} ${r.name}`),
202
+ ...(results.length === 0 ? [DIM('No connections configured yet')] : []),
203
+ '',
204
+ DIM(`Workspace: ${wsDir}`),
205
+ DIM(`Config: ${getConfigPath()}`),
206
+ ].join('\n'), 'Setup Complete');
207
+ p.outro(`Run ${ACCENT('mblk start <name>')} to create and start your first block.`);
208
+ }
209
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,GACrD,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE5F,eAAe;AACf,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACpC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAEtB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAsC;IACtE,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAE1B,4CAA4C;IAC5C,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;QAC5B,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC;YAC3C,SAAS,EAAE,UAAU;SACxB,CAAC,CAAC;QACH,MAAM,SAAS,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,CAAC;QAChD,MAAM,SAAS,CAAC,WAAW,EAAE,EAAE;YAC7B,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;YAClE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACzB,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACtB,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACtB,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACtC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SACtB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC3C,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;QACnC,GAAG,CAAC,OAAO,CAAC,cAAc,aAAa,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,aAAa,EAAE,CAAC;IAE1C,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,GAAG,CAAC,MAAM,EAAE,CAAC;IACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAEvE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAEpC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,4CAA4C;YACrD,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC;QAC5C,OAAO,EAAE,qCAAqC;QAC9C,OAAO,EAAE,SAAS;QAClB,aAAa,EAAE,CAAC,SAAS,CAAC;QAC1B,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAClC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,uDAAuD;IACvD,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC;QAC3C,OAAO,EAAE,uCAAuC;QAChD,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3B,GAAG,EAAE;YACL,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;SACzF,CAAC,CAAC;QACH,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QAC7B,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,uDAAuD;IACvD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACxF,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAE/E,IAAI,eAAe,GAAsB,EAAE,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,eAAe,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC;YACpC,OAAO,EAAE,gDAAgD;YACzD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1B,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,IAAI,EAAE,EAAE,CAAC,IAAI;aACd,CAAC,CAAC;YACH,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,MAAM,QAAQ,GAA2C,EAAE,CAAC;IAE5D,KAAK,MAAM,QAAQ,IAAK,iBAA8B,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEhE,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE,KAAK,IAAI,QAAQ,CAAC;QACnF,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,aAAa,cAAc,CAAC,CAAC;QAE3C,MAAM,IAAI,GAA2B,EAAE,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBACzB,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,WAAW,EAAE,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;gBACtD,YAAY,EAAE,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;aAC/D,CAAC,CAAC;YAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAI,KAAgB,IAAI,EAAE,CAAC;QAC5C,CAAC;QACD,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC7D,CAAC;IAED,kDAAkD;IAClD,KAAK,MAAM,OAAO,IAAK,gBAA6B,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC;QAC/E,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,cAAc,CAAC,CAAC;QAE1C,MAAM,IAAI,GAA2B,EAAE,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBACzB,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;aAC5C,CAAC,CAAC;YAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAI,KAAgB,IAAI,EAAE,CAAC;QAC5C,CAAC;QACD,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,uDAAuD;IACvD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACtB,MAAM,OAAO,GAAyC,EAAE,CAAC;IAEzD,eAAe;IACf,IAAI,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;QAC9B,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACzC,IAAI,CAAC;YACH,6DAA6D;YAC/C,oDAAoD;YAClE,MAAM,EAAE,oBAAoB,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAClG,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC;gBACtC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,WAAW;gBAC1C,WAAW,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE;aACtG,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;gBACpC,OAAO,EAAE,wCAAwC;gBACjD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACvD,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;aAClC,CAAC,CAAC,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,4EAA4E;YAC5E,MAAM,aAAa,GAAG,GAAG,EAAE,IAAI,KAAK,uBAAuB,IAAI,GAAG,EAAE,IAAI,KAAK,uBAAuB,CAAC;YACrG,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC7C,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAChC,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,+BAA+B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,QAAQ,CAAC,CAAC;YAC3F,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAqB,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IAEvB,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC;QAC7C,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC;IACH,MAAM,SAAS,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEzC,uDAAuD;IACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC,IAAI,CACJ;QACE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/E,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,EAAE;QACF,GAAG,CAAC,cAAc,KAAK,EAAE,CAAC;QAC1B,GAAG,CAAC,cAAc,aAAa,EAAE,EAAE,CAAC;KACrC,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,gBAAgB,CACjB,CAAC;IAEF,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,mBAAmB,CAAC,wCAAwC,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * View or update block permissions.
3
+ * Permissions are CLI-only — they cannot be changed via chat or web.
4
+ */
5
+ export declare function permissionsCommand(blockName: string, options?: {
6
+ scope?: string;
7
+ allowShell?: boolean;
8
+ denyShell?: boolean;
9
+ allowNetwork?: boolean;
10
+ denyNetwork?: boolean;
11
+ maxTimeout?: string;
12
+ }): Promise<void>;
13
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/commands/permissions.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAsB,kBAAkB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IACN,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,GACF,OAAO,CAAC,IAAI,CAAC,CAqDf"}
@@ -0,0 +1,60 @@
1
+ import { loadGlobalConfig, resolveBlockPath, loadBlockConfig, saveBlockConfig } from '@memoryblock/core';
2
+ import { pathExists } from '@memoryblock/core';
3
+ import { log } from '@memoryblock/core';
4
+ import { join } from 'node:path';
5
+ const VALID_SCOPES = ['block', 'workspace', 'system'];
6
+ /**
7
+ * View or update block permissions.
8
+ * Permissions are CLI-only — they cannot be changed via chat or web.
9
+ */
10
+ export async function permissionsCommand(blockName, options) {
11
+ const globalConfig = await loadGlobalConfig();
12
+ const blockPath = resolveBlockPath(globalConfig, blockName);
13
+ if (!await pathExists(join(blockPath, 'config.json'))) {
14
+ log.error(`Block "${blockName}" not found.`);
15
+ process.exit(1);
16
+ }
17
+ const config = await loadBlockConfig(blockPath);
18
+ const perms = config.permissions || { scope: 'block', allowShell: false, allowNetwork: true, maxTimeout: 120_000 };
19
+ // No flags = show current permissions
20
+ const hasFlags = options?.scope || options?.allowShell || options?.denyShell
21
+ || options?.allowNetwork || options?.denyNetwork || options?.maxTimeout;
22
+ if (!hasFlags) {
23
+ log.brand(`permissions — ${blockName}\n`);
24
+ console.log(` Scope: ${perms.scope}`);
25
+ console.log(` Shell Access: ${perms.allowShell ? '✓ allowed' : '✗ denied'}`);
26
+ console.log(` Network: ${perms.allowNetwork ? '✓ allowed' : '✗ denied'}`);
27
+ console.log(` Max Timeout: ${(perms.maxTimeout / 1000).toFixed(0)}s`);
28
+ console.log('');
29
+ log.dim(' Scopes:');
30
+ log.dim(' block — read/write own block directory only (default)');
31
+ log.dim(' workspace — access the entire workspace');
32
+ log.dim(' system — unrestricted file and shell access');
33
+ console.log('');
34
+ return;
35
+ }
36
+ // Apply changes
37
+ if (options?.scope) {
38
+ if (!VALID_SCOPES.includes(options.scope)) {
39
+ log.error(`Invalid scope: "${options.scope}". Use: block, workspace, or system.`);
40
+ process.exit(1);
41
+ }
42
+ perms.scope = options.scope;
43
+ }
44
+ if (options?.allowShell)
45
+ perms.allowShell = true;
46
+ if (options?.denyShell)
47
+ perms.allowShell = false;
48
+ if (options?.allowNetwork)
49
+ perms.allowNetwork = true;
50
+ if (options?.denyNetwork)
51
+ perms.allowNetwork = false;
52
+ if (options?.maxTimeout)
53
+ perms.maxTimeout = parseInt(options.maxTimeout, 10) * 1000;
54
+ // Save
55
+ config.permissions = perms;
56
+ await saveBlockConfig(blockPath, config);
57
+ log.success(` Permissions updated for "${blockName}".`);
58
+ console.log(` Scope: ${perms.scope}, Shell: ${perms.allowShell ? 'yes' : 'no'}, Network: ${perms.allowNetwork ? 'yes' : 'no'}, Timeout: ${(perms.maxTimeout / 1000).toFixed(0)}s`);
59
+ }
60
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/commands/permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * mblk settings <plugin> — view/edit plugin settings via CLI.
3
+ * Auto-generates forms from the plugin's settings schema.
4
+ */
5
+ export declare function pluginSettingsCommand(pluginId?: string): Promise<void>;
6
+ //# sourceMappingURL=plugin-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-settings.d.ts","sourceRoot":"","sources":["../../src/commands/plugin-settings.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuG5E"}
@@ -0,0 +1,118 @@
1
+ import * as p from '@clack/prompts';
2
+ import { log } from '@memoryblock/core';
3
+ /**
4
+ * mblk settings <plugin> — view/edit plugin settings via CLI.
5
+ * Auto-generates forms from the plugin's settings schema.
6
+ */
7
+ export async function pluginSettingsCommand(pluginId) {
8
+ let installer;
9
+ try {
10
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11
+ // @ts-ignore — optional runtime dependency, not needed at compile time
12
+ const mod = await import('@memoryblock/plugin-installer');
13
+ installer = new mod.PluginInstaller();
14
+ }
15
+ catch {
16
+ log.error('Plugin installer not available.');
17
+ process.exit(1);
18
+ }
19
+ const plugins = await installer.listPlugins();
20
+ // No plugin specified — list all plugins with settings
21
+ if (!pluginId) {
22
+ const withSettings = plugins.filter((pl) => pl.settings && Object.keys(pl.settings).length > 0);
23
+ if (withSettings.length === 0) {
24
+ log.dim(' No plugins with configurable settings.');
25
+ return;
26
+ }
27
+ log.brand('plugin settings\n');
28
+ for (const pl of withSettings) {
29
+ const fields = Object.keys(pl.settings).length;
30
+ console.log(` ${pl.core ? '●' : '○'} ${pl.name} (${pl.id}) — ${fields} setting${fields > 1 ? 's' : ''}`);
31
+ }
32
+ console.log('');
33
+ log.dim(' Run `mblk settings <plugin-id>` to configure.');
34
+ return;
35
+ }
36
+ // Find the plugin
37
+ const plugin = plugins.find((pl) => pl.id === pluginId);
38
+ if (!plugin) {
39
+ log.error(`Plugin "${pluginId}" not found.`);
40
+ process.exit(1);
41
+ }
42
+ if (!plugin.settings || Object.keys(plugin.settings).length === 0) {
43
+ log.dim(` Plugin "${plugin.name}" has no configurable settings.`);
44
+ return;
45
+ }
46
+ // Load current values
47
+ const current = await installer.getPluginSettings(pluginId);
48
+ p.intro(`${plugin.name} Settings`);
49
+ const updates = {};
50
+ for (const [key, field] of Object.entries(plugin.settings)) {
51
+ const currentVal = current[key];
52
+ if (field.type === 'select') {
53
+ const result = await p.select({
54
+ message: field.label,
55
+ options: (field.options || []).map((o) => ({
56
+ value: o,
57
+ label: o,
58
+ hint: o === currentVal ? 'current' : undefined,
59
+ })),
60
+ initialValue: currentVal || field.default,
61
+ });
62
+ if (p.isCancel(result)) {
63
+ p.outro('Cancelled.');
64
+ return;
65
+ }
66
+ updates[key] = result;
67
+ }
68
+ else if (field.type === 'toggle') {
69
+ const result = await p.confirm({
70
+ message: field.label,
71
+ initialValue: currentVal ?? field.default ?? false,
72
+ });
73
+ if (p.isCancel(result)) {
74
+ p.outro('Cancelled.');
75
+ return;
76
+ }
77
+ updates[key] = result;
78
+ }
79
+ else if (field.type === 'number') {
80
+ const result = await p.text({
81
+ message: `${field.label} (${field.min ?? ''}–${field.max ?? ''})`,
82
+ defaultValue: String(currentVal ?? field.default ?? ''),
83
+ placeholder: String(field.default ?? ''),
84
+ validate: (v) => {
85
+ const n = parseInt(v || '', 10);
86
+ if (isNaN(n))
87
+ return 'Must be a number';
88
+ if (field.min !== undefined && n < field.min)
89
+ return `Min: ${field.min}`;
90
+ if (field.max !== undefined && n > field.max)
91
+ return `Max: ${field.max}`;
92
+ },
93
+ });
94
+ if (p.isCancel(result)) {
95
+ p.outro('Cancelled.');
96
+ return;
97
+ }
98
+ updates[key] = parseInt(String(result), 10);
99
+ }
100
+ else {
101
+ // text / password
102
+ const result = await p.text({
103
+ message: field.label,
104
+ defaultValue: String(currentVal ?? field.default ?? ''),
105
+ placeholder: field.placeholder || '',
106
+ });
107
+ if (p.isCancel(result)) {
108
+ p.outro('Cancelled.');
109
+ return;
110
+ }
111
+ updates[key] = result;
112
+ }
113
+ }
114
+ // Save
115
+ await installer.savePluginSettings(pluginId, updates);
116
+ p.outro(`Settings saved for ${plugin.name}.`);
117
+ }
118
+ //# sourceMappingURL=plugin-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-settings.js","sourceRoot":"","sources":["../../src/commands/plugin-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function addCommand(pluginId: string): Promise<void>;
2
+ export declare function removeCommand(pluginId: string): Promise<void>;
3
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DhE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBnE"}
@@ -0,0 +1,83 @@
1
+ import { log } from '@memoryblock/core';
2
+ const INSTALLER_PKG = '@memoryblock/plugin-installer';
3
+ export async function addCommand(pluginId) {
4
+ let installer;
5
+ try {
6
+ const pkg = await import(INSTALLER_PKG);
7
+ installer = new pkg.PluginInstaller();
8
+ }
9
+ catch {
10
+ log.error('Plugin installer not available. Install @memoryblock/plugin-installer.');
11
+ process.exit(1);
12
+ }
13
+ // Show available if no ID
14
+ if (!pluginId) {
15
+ const plugins = await installer.listPlugins();
16
+ log.brand('Skills & Plugins\n');
17
+ // Check installed status for each plugin
18
+ const rows = [];
19
+ for (const p of plugins) {
20
+ let installed = false;
21
+ try {
22
+ require.resolve(p.package, { paths: [process.cwd()] });
23
+ installed = true;
24
+ }
25
+ catch { /* ignore */ }
26
+ rows.push({
27
+ id: p.id,
28
+ name: p.name,
29
+ status: p.status === 'upcoming' ? 'upcoming' : 'available',
30
+ installed,
31
+ });
32
+ }
33
+ // Table header
34
+ const colId = 16, colName = 24, colStatus = 12;
35
+ const header = ` ${'ID'.padEnd(colId)}${'Name'.padEnd(colName)}${'Status'.padEnd(colStatus)}Installed`;
36
+ const separator = ` ${'─'.repeat(colId)}${'─'.repeat(colName)}${'─'.repeat(colStatus)}${'─'.repeat(9)}`;
37
+ console.log(header);
38
+ console.log(separator);
39
+ for (const row of rows) {
40
+ const installedMark = row.installed ? ' ✓' : ' ·';
41
+ const statusLabel = row.status === 'upcoming' ? 'upcoming' : 'ready';
42
+ console.log(` ${row.id.padEnd(colId)}${row.name.padEnd(colName)}${statusLabel.padEnd(colStatus)}${installedMark}`);
43
+ }
44
+ console.log('');
45
+ return;
46
+ }
47
+ log.dim(` installing ${pluginId}...`);
48
+ const result = await installer.install(pluginId);
49
+ if (result.success) {
50
+ log.success(result.message);
51
+ if (result.plugin?.requiresAuth?.length) {
52
+ log.dim(` requires: ${result.plugin.requiresAuth.join(', ')}`);
53
+ }
54
+ }
55
+ else {
56
+ log.warn(result.message);
57
+ }
58
+ }
59
+ export async function removeCommand(pluginId) {
60
+ if (!pluginId) {
61
+ log.error('Specify a plugin ID: mblk remove <id>');
62
+ process.exit(1);
63
+ }
64
+ let installer;
65
+ try {
66
+ const pkg = await import(INSTALLER_PKG);
67
+ installer = new pkg.PluginInstaller();
68
+ }
69
+ catch {
70
+ log.error('Plugin installer not available.');
71
+ process.exit(1);
72
+ }
73
+ log.dim(` removing ${pluginId}...`);
74
+ const result = await installer.remove(pluginId);
75
+ if (result.success) {
76
+ log.success(result.message);
77
+ }
78
+ else {
79
+ log.error(result.message);
80
+ process.exit(1);
81
+ }
82
+ }
83
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * mblk reset <block> — Light cleanup: reset memory, pulse, costs, session
3
+ * mblk reset <block> --hard — Full wipe: also deletes logs/ (with confirmation)
4
+ */
5
+ export declare function resetCommand(blockName: string, options: {
6
+ hard?: boolean;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=reset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../src/commands/reset.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFhG"}