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.
- package/README.md +73 -115
- package/bin/mblk.js +68 -71
- package/dist/commands/create.d.ts +2 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +48 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/delete.d.ts +5 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +147 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +209 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/permissions.d.ts +13 -0
- package/dist/commands/permissions.d.ts.map +1 -0
- package/dist/commands/permissions.js +60 -0
- package/dist/commands/permissions.js.map +1 -0
- package/dist/commands/plugin-settings.d.ts +6 -0
- package/dist/commands/plugin-settings.d.ts.map +1 -0
- package/dist/commands/plugin-settings.js +118 -0
- package/dist/commands/plugin-settings.js.map +1 -0
- package/dist/commands/plugins.d.ts +3 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +83 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/reset.d.ts +8 -0
- package/dist/commands/reset.d.ts.map +1 -0
- package/dist/commands/reset.js +96 -0
- package/dist/commands/reset.js.map +1 -0
- package/dist/commands/server.d.ts +25 -0
- package/dist/commands/server.d.ts.map +1 -0
- package/dist/commands/server.js +295 -0
- package/dist/commands/server.js.map +1 -0
- package/dist/commands/service.d.ts +18 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +309 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/commands/start.d.ts +11 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +794 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +78 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +9 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +83 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/commands/web.d.ts +5 -0
- package/dist/commands/web.d.ts.map +1 -0
- package/dist/commands/web.js +63 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/commands.d.ts +7 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +7 -0
- package/dist/commands.js.map +1 -0
- package/dist/constants.d.ts +41 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +81 -0
- package/dist/constants.js.map +1 -0
- package/dist/entry.d.ts +9 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +345 -0
- package/dist/entry.js.map +1 -0
- package/package.json +32 -11
- package/dist/engine/agent.d.ts +0 -15
- package/dist/engine/agent.d.ts.map +0 -1
- package/dist/engine/agent.js +0 -19
- package/dist/engine/agent.js.map +0 -1
- package/dist/engine/conversation-log.d.ts +0 -35
- package/dist/engine/conversation-log.d.ts.map +0 -1
- package/dist/engine/conversation-log.js +0 -83
- package/dist/engine/conversation-log.js.map +0 -1
- package/dist/engine/cost-tracker.d.ts +0 -52
- package/dist/engine/cost-tracker.d.ts.map +0 -1
- package/dist/engine/cost-tracker.js +0 -110
- package/dist/engine/cost-tracker.js.map +0 -1
- package/dist/engine/gatekeeper.d.ts +0 -20
- package/dist/engine/gatekeeper.d.ts.map +0 -1
- package/dist/engine/gatekeeper.js +0 -43
- package/dist/engine/gatekeeper.js.map +0 -1
- package/dist/engine/memory.d.ts +0 -28
- package/dist/engine/memory.d.ts.map +0 -1
- package/dist/engine/memory.js +0 -69
- package/dist/engine/memory.js.map +0 -1
- package/dist/engine/monitor.d.ts +0 -81
- package/dist/engine/monitor.d.ts.map +0 -1
- package/dist/engine/monitor.js +0 -610
- package/dist/engine/monitor.js.map +0 -1
- package/dist/engine/prompts.d.ts +0 -31
- package/dist/engine/prompts.d.ts.map +0 -1
- package/dist/engine/prompts.js +0 -93
- package/dist/engine/prompts.js.map +0 -1
- package/dist/index.d.ts +0 -10
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -14
- package/dist/index.js.map +0 -1
- package/dist/utils/config.d.ts +0 -24
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -86
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/fs.d.ts +0 -18
- package/dist/utils/fs.d.ts.map +0 -1
- package/dist/utils/fs.js +0 -65
- package/dist/utils/fs.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -12
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -40
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAiB;IACzD,IAAI,SAAc,CAAC;IACnB,IAAI,CAAC;QACD,6DAA6D;QAC7D,uEAAuE;QACvE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAC1D,SAAS,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACL,GAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;IAE9C,uDAAuD;IACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAErG,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACpD,OAAO;QACX,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC/B,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,OAAO,MAAM,WAAW,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC3D,OAAO;IACX,CAAC;IAED,kBAAkB;IAClB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,WAAW,QAAQ,cAAc,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,IAAI,iCAAiC,CAAC,CAAC;QACnE,OAAO;IACX,CAAC;IAED,sBAAsB;IACtB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE5D,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,WAAW,CAAC,CAAC;IAEnC,MAAM,OAAO,GAA4B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB,EAAE,CAAC;QAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;gBAC1B,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;oBAC/C,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;iBACjD,CAAC,CAAC;gBACH,YAAY,EAAE,UAAU,IAAI,KAAK,CAAC,OAAO;aAC5C,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;gBAC3B,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,YAAY,EAAE,UAAU,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK;aACrD,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBACxB,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG;gBACjE,YAAY,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;gBACvD,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;gBACxC,QAAQ,EAAE,CAAC,CAAqB,EAAE,EAAE;oBAChC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;oBAChC,IAAI,KAAK,CAAC,CAAC,CAAC;wBAAE,OAAO,kBAAkB,CAAC;oBACxC,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG;wBAAE,OAAO,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;oBACzE,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG;wBAAE,OAAO,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC7E,CAAC;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACJ,kBAAkB;YAClB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBACxB,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,YAAY,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;gBACvD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;aACvC,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,OAAO;IACP,MAAM,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -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"}
|