zilmate 1.7.2 → 1.7.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/.env.example +36 -36
- package/README.md +503 -503
- package/SDK.md +320 -320
- package/agent-docs.md +276 -276
- package/dist/agents/automation-planner.agent.d.ts.map +1 -1
- package/dist/agents/coding.agent.d.ts +18 -0
- package/dist/agents/coding.agent.d.ts.map +1 -1
- package/dist/agents/finance.agent.d.ts +60 -0
- package/dist/agents/finance.agent.d.ts.map +1 -0
- package/dist/agents/finance.agent.js +30 -0
- package/dist/agents/finance.agent.js.map +1 -0
- package/dist/agents/manager.d.ts +94 -1
- package/dist/agents/manager.d.ts.map +1 -1
- package/dist/agents/manager.js +102 -36
- package/dist/agents/manager.js.map +1 -1
- package/dist/agents/swarm/engineering/qa.d.ts +3 -0
- package/dist/agents/swarm/engineering/qa.d.ts.map +1 -0
- package/dist/agents/swarm/engineering/qa.js +19 -0
- package/dist/agents/swarm/engineering/qa.js.map +1 -0
- package/dist/agents/swarm/growth/seo.d.ts +3 -0
- package/dist/agents/swarm/growth/seo.d.ts.map +1 -0
- package/dist/agents/swarm/growth/seo.js +19 -0
- package/dist/agents/swarm/growth/seo.js.map +1 -0
- package/dist/agents/swarm/main.d.ts +22 -0
- package/dist/agents/swarm/main.d.ts.map +1 -0
- package/dist/agents/swarm/main.js +65 -0
- package/dist/agents/swarm/main.js.map +1 -0
- package/dist/agents/swarm/operations/finance.d.ts +3 -0
- package/dist/agents/swarm/operations/finance.d.ts.map +1 -0
- package/dist/agents/swarm/operations/finance.js +19 -0
- package/dist/agents/swarm/operations/finance.js.map +1 -0
- package/dist/agents/swarm/registry.d.ts +4 -0
- package/dist/agents/swarm/registry.d.ts.map +1 -0
- package/dist/agents/swarm/registry.js +361 -0
- package/dist/agents/swarm/registry.js.map +1 -0
- package/dist/cli/composer.d.ts.map +1 -1
- package/dist/cli/composer.js +54 -4
- package/dist/cli/composer.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +13 -0
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +46 -24
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +47 -3
- package/dist/cli/interactive.js.map +1 -1
- package/dist/cli/render.d.ts.map +1 -1
- package/dist/cli/render.js +18 -9
- package/dist/cli/render.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +74 -2
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/swarm.d.ts +4 -0
- package/dist/cli/swarm.d.ts.map +1 -0
- package/dist/cli/swarm.js +21 -0
- package/dist/cli/swarm.js.map +1 -0
- package/dist/cli/theme.d.ts +9 -0
- package/dist/cli/theme.d.ts.map +1 -1
- package/dist/cli/theme.js +36 -0
- package/dist/cli/theme.js.map +1 -1
- package/dist/cli/tunnel.d.ts.map +1 -1
- package/dist/cli/tunnel.js +2 -1
- package/dist/cli/tunnel.js.map +1 -1
- package/dist/cli/voice.js +11 -11
- package/dist/cli/welcome.d.ts.map +1 -1
- package/dist/cli/welcome.js +2 -0
- package/dist/cli/welcome.js.map +1 -1
- package/dist/index.js +19 -1
- package/dist/index.js.map +1 -1
- package/dist/jobs/anomaly.js +5 -5
- package/dist/memory/heal.js +43 -43
- package/dist/observability/doctor.d.ts +3 -0
- package/dist/observability/doctor.d.ts.map +1 -0
- package/dist/observability/doctor.js +33 -0
- package/dist/observability/doctor.js.map +1 -0
- package/dist/observability/usage.d.ts +13 -0
- package/dist/observability/usage.d.ts.map +1 -0
- package/dist/observability/usage.js +34 -0
- package/dist/observability/usage.js.map +1 -0
- package/dist/runtime/confirm.d.ts.map +1 -1
- package/dist/runtime/confirm.js +12 -2
- package/dist/runtime/confirm.js.map +1 -1
- package/dist/runtime/prompts/builder.d.ts +11 -0
- package/dist/runtime/prompts/builder.d.ts.map +1 -0
- package/dist/runtime/prompts/builder.js +29 -0
- package/dist/runtime/prompts/builder.js.map +1 -0
- package/dist/runtime/registry.d.ts +14 -0
- package/dist/runtime/registry.d.ts.map +1 -0
- package/dist/runtime/registry.js +39 -0
- package/dist/runtime/registry.js.map +1 -0
- package/dist/runtime/storage/interface.d.ts +16 -0
- package/dist/runtime/storage/interface.d.ts.map +1 -0
- package/dist/runtime/storage/interface.js +19 -0
- package/dist/runtime/storage/interface.js.map +1 -0
- package/dist/runtime/storage/local.d.ts +12 -0
- package/dist/runtime/storage/local.d.ts.map +1 -0
- package/dist/runtime/storage/local.js +48 -0
- package/dist/runtime/storage/local.js.map +1 -0
- package/dist/runtime/storage/redis.d.ts +11 -0
- package/dist/runtime/storage/redis.d.ts.map +1 -0
- package/dist/runtime/storage/redis.js +21 -0
- package/dist/runtime/storage/redis.js.map +1 -0
- package/dist/runtime/swarm/reports.d.ts +9 -0
- package/dist/runtime/swarm/reports.d.ts.map +1 -0
- package/dist/runtime/swarm/reports.js +43 -0
- package/dist/runtime/swarm/reports.js.map +1 -0
- package/dist/runtime/swarm.d.ts +37 -0
- package/dist/runtime/swarm.d.ts.map +1 -0
- package/dist/runtime/swarm.js +90 -0
- package/dist/runtime/swarm.js.map +1 -0
- package/dist/runtime/telemetry.d.ts +15 -0
- package/dist/runtime/telemetry.d.ts.map +1 -0
- package/dist/runtime/telemetry.js +25 -0
- package/dist/runtime/telemetry.js.map +1 -0
- package/dist/runtime/tool-utils.d.ts +12 -0
- package/dist/runtime/tool-utils.d.ts.map +1 -0
- package/dist/runtime/tool-utils.js +31 -0
- package/dist/runtime/tool-utils.js.map +1 -0
- package/dist/tools/browser.tool.d.ts +54 -0
- package/dist/tools/browser.tool.d.ts.map +1 -0
- package/dist/tools/browser.tool.js +193 -0
- package/dist/tools/browser.tool.js.map +1 -0
- package/dist/tools/business-apps.tool.d.ts +18 -0
- package/dist/tools/business-apps.tool.d.ts.map +1 -0
- package/dist/tools/business-apps.tool.js +43 -0
- package/dist/tools/business-apps.tool.js.map +1 -0
- package/dist/tools/computer-use.tool.js +66 -66
- package/dist/tools/cross-app-ledger.tool.d.ts +7 -0
- package/dist/tools/cross-app-ledger.tool.d.ts.map +1 -0
- package/dist/tools/cross-app-ledger.tool.js +70 -0
- package/dist/tools/cross-app-ledger.tool.js.map +1 -0
- package/dist/tools/desktop.tool.js +10 -10
- package/dist/tools/documents.tool.js +5 -5
- package/dist/tools/finance.tool.d.ts +18 -0
- package/dist/tools/finance.tool.d.ts.map +1 -0
- package/dist/tools/finance.tool.js +88 -0
- package/dist/tools/finance.tool.js.map +1 -0
- package/dist/tools/image-intelligence.tool.d.ts +12 -0
- package/dist/tools/image-intelligence.tool.d.ts.map +1 -0
- package/dist/tools/image-intelligence.tool.js +62 -0
- package/dist/tools/image-intelligence.tool.js.map +1 -0
- package/dist/tools/notify.tool.js +8 -8
- package/dist/tools/osint-install.tool.js +8 -8
- package/dist/tools/pentest-install.tool.js +6 -6
- package/dist/tools/setup-assistant.tool.d.ts +1 -1
- package/dist/tools/shell.tool.d.ts +18 -0
- package/dist/tools/shell.tool.d.ts.map +1 -1
- package/dist/tools/shell.tool.js +34 -0
- package/dist/tools/shell.tool.js.map +1 -1
- package/dist/tools/triggers.tool.d.ts.map +1 -1
- package/dist/tools/web-intelligence.tool.d.ts +12 -0
- package/dist/tools/web-intelligence.tool.d.ts.map +1 -0
- package/dist/tools/web-intelligence.tool.js +27 -0
- package/dist/tools/web-intelligence.tool.js.map +1 -0
- package/dist/workspace/init.js +18 -18
- package/dist/workspace/output-paths.d.ts +1 -1
- package/dist/workspace/output-paths.d.ts.map +1 -1
- package/dist/workspace/output-paths.js +1 -0
- package/dist/workspace/output-paths.js.map +1 -1
- package/dist/workspace/paths.d.ts +1 -0
- package/dist/workspace/paths.d.ts.map +1 -1
- package/dist/workspace/paths.js +1 -0
- package/dist/workspace/paths.js.map +1 -1
- package/install.ps1 +62 -62
- package/package.json +106 -103
- package/scripts/postinstall.mjs +42 -42
- package/scripts/release-github.mjs +91 -91
- package/src/doc/README.md +49 -49
- package/src/doc/admin-tools-and-sms-campaigns.md +99 -99
- package/src/doc/escalation-checklist.md +97 -97
- package/src/doc/payments-and-payouts.md +82 -82
- package/src/doc/shift-lifecycle-and-disputes.md +95 -95
- package/src/doc/support-macros.md +40 -40
- package/src/doc/venue-support-playbook.md +145 -145
- package/src/doc/verification-and-trust.md +88 -88
- package/src/doc/worker-support-playbook.md +159 -159
package/scripts/postinstall.mjs
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
// postinstall.mjs
|
|
2
|
-
import { mkdir, writeFile } from 'node:fs/promises';
|
|
3
|
-
import { existsSync } from 'node:fs';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import { homedir } from 'node:os';
|
|
6
|
-
|
|
7
|
-
const root = process.env.ZILMATE_WORKSPACE?.trim()
|
|
8
|
-
? path.resolve(process.env.ZILMATE_WORKSPACE.trim())
|
|
9
|
-
: process.platform === 'win32' || process.platform === 'darwin'
|
|
10
|
-
? path.join(homedir(), 'Downloads', 'ZilMate')
|
|
11
|
-
: path.join(homedir(), 'ZilMate');
|
|
12
|
-
|
|
13
|
-
const dirs = [
|
|
14
|
-
root,
|
|
15
|
-
path.join(root, 'skills'),
|
|
16
|
-
path.join(root, 'outputs', 'osint'),
|
|
17
|
-
path.join(root, 'outputs', 'pentest'),
|
|
18
|
-
path.join(root, 'outputs', 'images'),
|
|
19
|
-
path.join(root, 'logs'),
|
|
20
|
-
path.join(root, 'projects'),
|
|
21
|
-
path.join(root, 'attachments'),
|
|
22
|
-
path.join(root, 'backups'),
|
|
23
|
-
path.join(root, 'config'),
|
|
24
|
-
path.join(root, 'scratch'),
|
|
25
|
-
path.join(root, 'data'),
|
|
26
|
-
];
|
|
27
|
-
|
|
28
|
-
for (const dir of dirs) {
|
|
29
|
-
await mkdir(dir, { recursive: true });
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const notebook = path.join(root, 'notebook.md');
|
|
33
|
-
if (!existsSync(notebook)) {
|
|
34
|
-
await writeFile(notebook, '# ZilMate Notebook\n\n', 'utf8');
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const memory = path.join(root, 'memory.json');
|
|
38
|
-
if (!existsSync(memory)) {
|
|
39
|
-
await writeFile(memory, '[]\n', 'utf8');
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
console.log(`ZilMate workspace ready at ${root}`);
|
|
1
|
+
// postinstall.mjs
|
|
2
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
|
|
7
|
+
const root = process.env.ZILMATE_WORKSPACE?.trim()
|
|
8
|
+
? path.resolve(process.env.ZILMATE_WORKSPACE.trim())
|
|
9
|
+
: process.platform === 'win32' || process.platform === 'darwin'
|
|
10
|
+
? path.join(homedir(), 'Downloads', 'ZilMate')
|
|
11
|
+
: path.join(homedir(), 'ZilMate');
|
|
12
|
+
|
|
13
|
+
const dirs = [
|
|
14
|
+
root,
|
|
15
|
+
path.join(root, 'skills'),
|
|
16
|
+
path.join(root, 'outputs', 'osint'),
|
|
17
|
+
path.join(root, 'outputs', 'pentest'),
|
|
18
|
+
path.join(root, 'outputs', 'images'),
|
|
19
|
+
path.join(root, 'logs'),
|
|
20
|
+
path.join(root, 'projects'),
|
|
21
|
+
path.join(root, 'attachments'),
|
|
22
|
+
path.join(root, 'backups'),
|
|
23
|
+
path.join(root, 'config'),
|
|
24
|
+
path.join(root, 'scratch'),
|
|
25
|
+
path.join(root, 'data'),
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
for (const dir of dirs) {
|
|
29
|
+
await mkdir(dir, { recursive: true });
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const notebook = path.join(root, 'notebook.md');
|
|
33
|
+
if (!existsSync(notebook)) {
|
|
34
|
+
await writeFile(notebook, '# ZilMate Notebook\n\n', 'utf8');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const memory = path.join(root, 'memory.json');
|
|
38
|
+
if (!existsSync(memory)) {
|
|
39
|
+
await writeFile(memory, '[]\n', 'utf8');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
console.log(`ZilMate workspace ready at ${root}`);
|
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
import { execFileSync } from 'node:child_process';
|
|
2
|
-
import { readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { tmpdir } from 'node:os';
|
|
5
|
-
|
|
6
|
-
const args = new Set(process.argv.slice(2));
|
|
7
|
-
const dryRun = args.has('--dry-run');
|
|
8
|
-
const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
9
|
-
const version = pkg.version;
|
|
10
|
-
const tag = `v${version}`;
|
|
11
|
-
const title = `ZilMate ${tag}`;
|
|
12
|
-
|
|
13
|
-
const notes = `# ${title}
|
|
14
|
-
|
|
15
|
-
ZilMate ${tag} — Claude-inspired CLI, situational awareness, session handoffs, model picker, and SDK docs.
|
|
16
|
-
|
|
17
|
-
## Install
|
|
18
|
-
|
|
19
|
-
\`\`\`powershell
|
|
20
|
-
npm install -g zilmate@${version}
|
|
21
|
-
zilmate setup
|
|
22
|
-
zilmate doctor --live
|
|
23
|
-
zilmate talk
|
|
24
|
-
\`\`\`
|
|
25
|
-
|
|
26
|
-
## Highlights
|
|
27
|
-
|
|
28
|
-
- **Beautiful CLI** — welcome card, tips, boxed composer input, Claude-style tool progress (\`● tool\` / \`└ Done\`).
|
|
29
|
-
- **/model pick** — interactively choose manager, coding, image, and vision models; persisted to workspace \`config/models.json\`.
|
|
30
|
-
- **Situational awareness** — \`getSituationBrief\` snapshots cwd, git, workspace, jobs, memory, models, and capabilities.
|
|
31
|
-
- **Session continuity** — handoff save/load/generate so ZilMate resumes where you left off.
|
|
32
|
-
- **Coding intelligence** — five tools: grep, working-tree review, symbol explain, scaffold, project checks; appBuilder + qaIntegration sub-coders.
|
|
33
|
-
- **Image director** — \`enhanceImagePrompt\` + generation with art-direction presets.
|
|
34
|
-
- **Cloudflare setup** — dedicated tunnel section in \`zilmate setup\`; \`zilmate jobs listen --tunnel\`.
|
|
35
|
-
- **SDK.md** — Next.js App Router streaming route, subagents, jobs, voice, model selection.
|
|
36
|
-
|
|
37
|
-
## Quick Checks
|
|
38
|
-
|
|
39
|
-
\`\`\`powershell
|
|
40
|
-
zilmate talk
|
|
41
|
-
/model pick
|
|
42
|
-
zilmate jobs listen --tunnel
|
|
43
|
-
\`\`\`
|
|
44
|
-
|
|
45
|
-
## npm
|
|
46
|
-
|
|
47
|
-
Published package: \`zilmate@${version}\`
|
|
48
|
-
`;
|
|
49
|
-
|
|
50
|
-
const run = (command, commandArgs, options = {}) => {
|
|
51
|
-
return execFileSync(command, commandArgs, {
|
|
52
|
-
encoding: 'utf8',
|
|
53
|
-
stdio: options.stdio ?? 'pipe',
|
|
54
|
-
...options,
|
|
55
|
-
});
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
if (dryRun) {
|
|
59
|
-
console.log(`Tag: ${tag}`);
|
|
60
|
-
console.log(`Title: ${title}`);
|
|
61
|
-
console.log('');
|
|
62
|
-
console.log(notes);
|
|
63
|
-
process.exit(0);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
try {
|
|
67
|
-
run('gh', ['auth', 'status'], { stdio: 'pipe' });
|
|
68
|
-
} catch {
|
|
69
|
-
console.error('GitHub CLI is not authenticated. Run: gh auth login -h github.com');
|
|
70
|
-
process.exit(1);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const notesPath = join(tmpdir(), `zilmate-${version}-github-release.md`);
|
|
74
|
-
writeFileSync(notesPath, notes);
|
|
75
|
-
|
|
76
|
-
run(
|
|
77
|
-
'gh',
|
|
78
|
-
[
|
|
79
|
-
'release',
|
|
80
|
-
'create',
|
|
81
|
-
tag,
|
|
82
|
-
'--repo',
|
|
83
|
-
'zester4/zilo-manager',
|
|
84
|
-
'--title',
|
|
85
|
-
title,
|
|
86
|
-
'--notes-file',
|
|
87
|
-
notesPath,
|
|
88
|
-
'--latest',
|
|
89
|
-
],
|
|
90
|
-
{ stdio: 'inherit' },
|
|
91
|
-
);
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
|
|
6
|
+
const args = new Set(process.argv.slice(2));
|
|
7
|
+
const dryRun = args.has('--dry-run');
|
|
8
|
+
const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
9
|
+
const version = pkg.version;
|
|
10
|
+
const tag = `v${version}`;
|
|
11
|
+
const title = `ZilMate ${tag}`;
|
|
12
|
+
|
|
13
|
+
const notes = `# ${title}
|
|
14
|
+
|
|
15
|
+
ZilMate ${tag} — Claude-inspired CLI, situational awareness, session handoffs, model picker, and SDK docs.
|
|
16
|
+
|
|
17
|
+
## Install
|
|
18
|
+
|
|
19
|
+
\`\`\`powershell
|
|
20
|
+
npm install -g zilmate@${version}
|
|
21
|
+
zilmate setup
|
|
22
|
+
zilmate doctor --live
|
|
23
|
+
zilmate talk
|
|
24
|
+
\`\`\`
|
|
25
|
+
|
|
26
|
+
## Highlights
|
|
27
|
+
|
|
28
|
+
- **Beautiful CLI** — welcome card, tips, boxed composer input, Claude-style tool progress (\`● tool\` / \`└ Done\`).
|
|
29
|
+
- **/model pick** — interactively choose manager, coding, image, and vision models; persisted to workspace \`config/models.json\`.
|
|
30
|
+
- **Situational awareness** — \`getSituationBrief\` snapshots cwd, git, workspace, jobs, memory, models, and capabilities.
|
|
31
|
+
- **Session continuity** — handoff save/load/generate so ZilMate resumes where you left off.
|
|
32
|
+
- **Coding intelligence** — five tools: grep, working-tree review, symbol explain, scaffold, project checks; appBuilder + qaIntegration sub-coders.
|
|
33
|
+
- **Image director** — \`enhanceImagePrompt\` + generation with art-direction presets.
|
|
34
|
+
- **Cloudflare setup** — dedicated tunnel section in \`zilmate setup\`; \`zilmate jobs listen --tunnel\`.
|
|
35
|
+
- **SDK.md** — Next.js App Router streaming route, subagents, jobs, voice, model selection.
|
|
36
|
+
|
|
37
|
+
## Quick Checks
|
|
38
|
+
|
|
39
|
+
\`\`\`powershell
|
|
40
|
+
zilmate talk
|
|
41
|
+
/model pick
|
|
42
|
+
zilmate jobs listen --tunnel
|
|
43
|
+
\`\`\`
|
|
44
|
+
|
|
45
|
+
## npm
|
|
46
|
+
|
|
47
|
+
Published package: \`zilmate@${version}\`
|
|
48
|
+
`;
|
|
49
|
+
|
|
50
|
+
const run = (command, commandArgs, options = {}) => {
|
|
51
|
+
return execFileSync(command, commandArgs, {
|
|
52
|
+
encoding: 'utf8',
|
|
53
|
+
stdio: options.stdio ?? 'pipe',
|
|
54
|
+
...options,
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
if (dryRun) {
|
|
59
|
+
console.log(`Tag: ${tag}`);
|
|
60
|
+
console.log(`Title: ${title}`);
|
|
61
|
+
console.log('');
|
|
62
|
+
console.log(notes);
|
|
63
|
+
process.exit(0);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
try {
|
|
67
|
+
run('gh', ['auth', 'status'], { stdio: 'pipe' });
|
|
68
|
+
} catch {
|
|
69
|
+
console.error('GitHub CLI is not authenticated. Run: gh auth login -h github.com');
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const notesPath = join(tmpdir(), `zilmate-${version}-github-release.md`);
|
|
74
|
+
writeFileSync(notesPath, notes);
|
|
75
|
+
|
|
76
|
+
run(
|
|
77
|
+
'gh',
|
|
78
|
+
[
|
|
79
|
+
'release',
|
|
80
|
+
'create',
|
|
81
|
+
tag,
|
|
82
|
+
'--repo',
|
|
83
|
+
'zester4/zilo-manager',
|
|
84
|
+
'--title',
|
|
85
|
+
title,
|
|
86
|
+
'--notes-file',
|
|
87
|
+
notesPath,
|
|
88
|
+
'--latest',
|
|
89
|
+
],
|
|
90
|
+
{ stdio: 'inherit' },
|
|
91
|
+
);
|
package/src/doc/README.md
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
# ZiloShift Support Training Docs
|
|
2
|
-
|
|
3
|
-
These docs train support staff to help workers and venues use ZiloShift confidently, safely, and consistently.
|
|
4
|
-
|
|
5
|
-
## Who These Docs Are For
|
|
6
|
-
|
|
7
|
-
- Customer support agents helping workers and venues.
|
|
8
|
-
- Operations staff reviewing verification, payments, disputes, and shift issues.
|
|
9
|
-
- Admin users handling SMS campaigns, account questions, and escalation.
|
|
10
|
-
|
|
11
|
-
## Core Support Principles
|
|
12
|
-
|
|
13
|
-
1. Protect user safety and money first.
|
|
14
|
-
2. Verify the account, role, country, and shift before giving specific advice.
|
|
15
|
-
3. Do not ask users to share passwords, full card details, full ID numbers, or private API keys.
|
|
16
|
-
4. Explain next steps clearly and avoid blaming the user.
|
|
17
|
-
5. Escalate when money, identity, fraud, safety, legal, or platform bugs are involved.
|
|
18
|
-
|
|
19
|
-
## Platform Overview
|
|
20
|
-
|
|
21
|
-
ZiloShift connects workers with venues that need shift cover. Workers create profiles, verify identity, add roles/certifications, browse shifts in their city, apply, get accepted, clock in/out, message venues, and receive payouts. Venues verify their business, connect payment/billing, post shifts, review applicants, accept workers, coordinate through messages, and confirm completion.
|
|
22
|
-
|
|
23
|
-
## Support Areas
|
|
24
|
-
|
|
25
|
-
- [Worker Support Playbook](./worker-support-playbook.md)
|
|
26
|
-
- [Venue Support Playbook](./venue-support-playbook.md)
|
|
27
|
-
- [Verification And Trust](./verification-and-trust.md)
|
|
28
|
-
- [Payments And Payouts](./payments-and-payouts.md)
|
|
29
|
-
- [Shift Lifecycle And Disputes](./shift-lifecycle-and-disputes.md)
|
|
30
|
-
- [Admin Tools And SMS Campaigns](./admin-tools-and-sms-campaigns.md)
|
|
31
|
-
- [Support Macros](./support-macros.md)
|
|
32
|
-
- [Escalation Checklist](./escalation-checklist.md)
|
|
33
|
-
|
|
34
|
-
## Quick Triage Questions
|
|
35
|
-
|
|
36
|
-
Ask these before troubleshooting:
|
|
37
|
-
|
|
38
|
-
1. Are you a worker or venue?
|
|
39
|
-
2. What country are you in?
|
|
40
|
-
3. What email or phone number is on the account?
|
|
41
|
-
4. What page were you on when the issue happened?
|
|
42
|
-
5. If it is about a shift, what is the role, date, venue/company, and city?
|
|
43
|
-
6. If it is about payment, what provider was shown: Hubtel, Paystack, Razorpay, Stripe, or bank/card?
|
|
44
|
-
7. What exact error message did you see?
|
|
45
|
-
|
|
46
|
-
## Risk Warning
|
|
47
|
-
|
|
48
|
-
Do not manually override identity verification, payment status, payout destination, worker reliability, cancellation penalties, or dispute outcomes unless an authorized admin or engineering escalation confirms it.
|
|
49
|
-
|
|
1
|
+
# ZiloShift Support Training Docs
|
|
2
|
+
|
|
3
|
+
These docs train support staff to help workers and venues use ZiloShift confidently, safely, and consistently.
|
|
4
|
+
|
|
5
|
+
## Who These Docs Are For
|
|
6
|
+
|
|
7
|
+
- Customer support agents helping workers and venues.
|
|
8
|
+
- Operations staff reviewing verification, payments, disputes, and shift issues.
|
|
9
|
+
- Admin users handling SMS campaigns, account questions, and escalation.
|
|
10
|
+
|
|
11
|
+
## Core Support Principles
|
|
12
|
+
|
|
13
|
+
1. Protect user safety and money first.
|
|
14
|
+
2. Verify the account, role, country, and shift before giving specific advice.
|
|
15
|
+
3. Do not ask users to share passwords, full card details, full ID numbers, or private API keys.
|
|
16
|
+
4. Explain next steps clearly and avoid blaming the user.
|
|
17
|
+
5. Escalate when money, identity, fraud, safety, legal, or platform bugs are involved.
|
|
18
|
+
|
|
19
|
+
## Platform Overview
|
|
20
|
+
|
|
21
|
+
ZiloShift connects workers with venues that need shift cover. Workers create profiles, verify identity, add roles/certifications, browse shifts in their city, apply, get accepted, clock in/out, message venues, and receive payouts. Venues verify their business, connect payment/billing, post shifts, review applicants, accept workers, coordinate through messages, and confirm completion.
|
|
22
|
+
|
|
23
|
+
## Support Areas
|
|
24
|
+
|
|
25
|
+
- [Worker Support Playbook](./worker-support-playbook.md)
|
|
26
|
+
- [Venue Support Playbook](./venue-support-playbook.md)
|
|
27
|
+
- [Verification And Trust](./verification-and-trust.md)
|
|
28
|
+
- [Payments And Payouts](./payments-and-payouts.md)
|
|
29
|
+
- [Shift Lifecycle And Disputes](./shift-lifecycle-and-disputes.md)
|
|
30
|
+
- [Admin Tools And SMS Campaigns](./admin-tools-and-sms-campaigns.md)
|
|
31
|
+
- [Support Macros](./support-macros.md)
|
|
32
|
+
- [Escalation Checklist](./escalation-checklist.md)
|
|
33
|
+
|
|
34
|
+
## Quick Triage Questions
|
|
35
|
+
|
|
36
|
+
Ask these before troubleshooting:
|
|
37
|
+
|
|
38
|
+
1. Are you a worker or venue?
|
|
39
|
+
2. What country are you in?
|
|
40
|
+
3. What email or phone number is on the account?
|
|
41
|
+
4. What page were you on when the issue happened?
|
|
42
|
+
5. If it is about a shift, what is the role, date, venue/company, and city?
|
|
43
|
+
6. If it is about payment, what provider was shown: Hubtel, Paystack, Razorpay, Stripe, or bank/card?
|
|
44
|
+
7. What exact error message did you see?
|
|
45
|
+
|
|
46
|
+
## Risk Warning
|
|
47
|
+
|
|
48
|
+
Do not manually override identity verification, payment status, payout destination, worker reliability, cancellation penalties, or dispute outcomes unless an authorized admin or engineering escalation confirms it.
|
|
49
|
+
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
# Admin Tools And SMS Campaigns
|
|
2
|
-
|
|
3
|
-
This guide trains admins to use campaign tools, verification queues, user management, shifts, payments, and disputes.
|
|
4
|
-
|
|
5
|
-
## Admin SMS Campaigns
|
|
6
|
-
|
|
7
|
-
SMS campaigns are for Ghana users through Hubtel SMS.
|
|
8
|
-
|
|
9
|
-
Supported audiences:
|
|
10
|
-
|
|
11
|
-
- Workers.
|
|
12
|
-
- Venues.
|
|
13
|
-
- Both workers and venues.
|
|
14
|
-
|
|
15
|
-
The campaign tool should:
|
|
16
|
-
|
|
17
|
-
1. Let admin choose audience.
|
|
18
|
-
2. Preview real recipients.
|
|
19
|
-
3. Show skipped users missing phone numbers.
|
|
20
|
-
4. Send a test SMS before bulk sending.
|
|
21
|
-
5. Send personalized batch SMS through Hubtel.
|
|
22
|
-
6. Save campaign logs in `sms_campaigns`.
|
|
23
|
-
|
|
24
|
-
## Hubtel SMS Contract
|
|
25
|
-
|
|
26
|
-
The gateway follows Hubtel SMS docs:
|
|
27
|
-
|
|
28
|
-
- Single test SMS: `POST /v1/messages/send`.
|
|
29
|
-
- Personalized batch SMS: `POST /v1/messages/batch/personalized/send`.
|
|
30
|
-
- Basic Auth is built from SMS credentials.
|
|
31
|
-
- Sender ID max length is 11 characters.
|
|
32
|
-
|
|
33
|
-
Supported variables:
|
|
34
|
-
|
|
35
|
-
- `{{first_name}}`
|
|
36
|
-
- `{{last_name}}`
|
|
37
|
-
- `{{name}}`
|
|
38
|
-
- `{{company_name}}`
|
|
39
|
-
- `{{account_type}}`
|
|
40
|
-
- `{{city}}`
|
|
41
|
-
- `{{town}}`
|
|
42
|
-
|
|
43
|
-
## SMS Troubleshooting
|
|
44
|
-
|
|
45
|
-
If test SMS returns 400:
|
|
46
|
-
|
|
47
|
-
- Check Hubtel error details.
|
|
48
|
-
- Check phone format normalizes to `233...`.
|
|
49
|
-
- Check sender ID is 11 characters or less.
|
|
50
|
-
- Check message length is not too long.
|
|
51
|
-
- Check SMS account credit.
|
|
52
|
-
- Check if recipient is blacklisted.
|
|
53
|
-
- Check SMS credentials.
|
|
54
|
-
|
|
55
|
-
If no workers appear:
|
|
56
|
-
|
|
57
|
-
- Check Ghana workers have profile phone numbers.
|
|
58
|
-
- Workers without phone numbers are skipped.
|
|
59
|
-
|
|
60
|
-
If venues appear but workers do not:
|
|
61
|
-
|
|
62
|
-
- Venue phone may exist on `venues.phone`.
|
|
63
|
-
- Worker phone must exist on `profiles.phone`.
|
|
64
|
-
|
|
65
|
-
## Admin Verification Page
|
|
66
|
-
|
|
67
|
-
Admins can review identity and business verification.
|
|
68
|
-
|
|
69
|
-
Do not approve:
|
|
70
|
-
|
|
71
|
-
- Mismatched names.
|
|
72
|
-
- Blurry IDs.
|
|
73
|
-
- Missing liveness.
|
|
74
|
-
- Suspicious duplicate accounts.
|
|
75
|
-
|
|
76
|
-
## Admin Payments Page
|
|
77
|
-
|
|
78
|
-
Admins should use this for:
|
|
79
|
-
|
|
80
|
-
- Captured payments.
|
|
81
|
-
- Payout status.
|
|
82
|
-
- Failed provider responses.
|
|
83
|
-
- Refund checks.
|
|
84
|
-
|
|
85
|
-
Never expose secret keys in admin notes or user replies.
|
|
86
|
-
|
|
87
|
-
## Admin Disputes Page
|
|
88
|
-
|
|
89
|
-
Admins should review:
|
|
90
|
-
|
|
91
|
-
- Worker/venue claims.
|
|
92
|
-
- Shift status.
|
|
93
|
-
- Clock-in/out.
|
|
94
|
-
- Messages.
|
|
95
|
-
- Payment status.
|
|
96
|
-
- Reliability/no-show history.
|
|
97
|
-
|
|
98
|
-
Keep notes factual and timestamped.
|
|
99
|
-
|
|
1
|
+
# Admin Tools And SMS Campaigns
|
|
2
|
+
|
|
3
|
+
This guide trains admins to use campaign tools, verification queues, user management, shifts, payments, and disputes.
|
|
4
|
+
|
|
5
|
+
## Admin SMS Campaigns
|
|
6
|
+
|
|
7
|
+
SMS campaigns are for Ghana users through Hubtel SMS.
|
|
8
|
+
|
|
9
|
+
Supported audiences:
|
|
10
|
+
|
|
11
|
+
- Workers.
|
|
12
|
+
- Venues.
|
|
13
|
+
- Both workers and venues.
|
|
14
|
+
|
|
15
|
+
The campaign tool should:
|
|
16
|
+
|
|
17
|
+
1. Let admin choose audience.
|
|
18
|
+
2. Preview real recipients.
|
|
19
|
+
3. Show skipped users missing phone numbers.
|
|
20
|
+
4. Send a test SMS before bulk sending.
|
|
21
|
+
5. Send personalized batch SMS through Hubtel.
|
|
22
|
+
6. Save campaign logs in `sms_campaigns`.
|
|
23
|
+
|
|
24
|
+
## Hubtel SMS Contract
|
|
25
|
+
|
|
26
|
+
The gateway follows Hubtel SMS docs:
|
|
27
|
+
|
|
28
|
+
- Single test SMS: `POST /v1/messages/send`.
|
|
29
|
+
- Personalized batch SMS: `POST /v1/messages/batch/personalized/send`.
|
|
30
|
+
- Basic Auth is built from SMS credentials.
|
|
31
|
+
- Sender ID max length is 11 characters.
|
|
32
|
+
|
|
33
|
+
Supported variables:
|
|
34
|
+
|
|
35
|
+
- `{{first_name}}`
|
|
36
|
+
- `{{last_name}}`
|
|
37
|
+
- `{{name}}`
|
|
38
|
+
- `{{company_name}}`
|
|
39
|
+
- `{{account_type}}`
|
|
40
|
+
- `{{city}}`
|
|
41
|
+
- `{{town}}`
|
|
42
|
+
|
|
43
|
+
## SMS Troubleshooting
|
|
44
|
+
|
|
45
|
+
If test SMS returns 400:
|
|
46
|
+
|
|
47
|
+
- Check Hubtel error details.
|
|
48
|
+
- Check phone format normalizes to `233...`.
|
|
49
|
+
- Check sender ID is 11 characters or less.
|
|
50
|
+
- Check message length is not too long.
|
|
51
|
+
- Check SMS account credit.
|
|
52
|
+
- Check if recipient is blacklisted.
|
|
53
|
+
- Check SMS credentials.
|
|
54
|
+
|
|
55
|
+
If no workers appear:
|
|
56
|
+
|
|
57
|
+
- Check Ghana workers have profile phone numbers.
|
|
58
|
+
- Workers without phone numbers are skipped.
|
|
59
|
+
|
|
60
|
+
If venues appear but workers do not:
|
|
61
|
+
|
|
62
|
+
- Venue phone may exist on `venues.phone`.
|
|
63
|
+
- Worker phone must exist on `profiles.phone`.
|
|
64
|
+
|
|
65
|
+
## Admin Verification Page
|
|
66
|
+
|
|
67
|
+
Admins can review identity and business verification.
|
|
68
|
+
|
|
69
|
+
Do not approve:
|
|
70
|
+
|
|
71
|
+
- Mismatched names.
|
|
72
|
+
- Blurry IDs.
|
|
73
|
+
- Missing liveness.
|
|
74
|
+
- Suspicious duplicate accounts.
|
|
75
|
+
|
|
76
|
+
## Admin Payments Page
|
|
77
|
+
|
|
78
|
+
Admins should use this for:
|
|
79
|
+
|
|
80
|
+
- Captured payments.
|
|
81
|
+
- Payout status.
|
|
82
|
+
- Failed provider responses.
|
|
83
|
+
- Refund checks.
|
|
84
|
+
|
|
85
|
+
Never expose secret keys in admin notes or user replies.
|
|
86
|
+
|
|
87
|
+
## Admin Disputes Page
|
|
88
|
+
|
|
89
|
+
Admins should review:
|
|
90
|
+
|
|
91
|
+
- Worker/venue claims.
|
|
92
|
+
- Shift status.
|
|
93
|
+
- Clock-in/out.
|
|
94
|
+
- Messages.
|
|
95
|
+
- Payment status.
|
|
96
|
+
- Reliability/no-show history.
|
|
97
|
+
|
|
98
|
+
Keep notes factual and timestamped.
|
|
99
|
+
|