zilmate 1.7.2 → 1.7.6

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 (228) hide show
  1. package/.env.example +36 -36
  2. package/README.md +503 -503
  3. package/SDK.md +320 -320
  4. package/agent-docs.md +276 -276
  5. package/dist/agents/automation-planner.agent.d.ts.map +1 -1
  6. package/dist/agents/coding.agent.d.ts +18 -0
  7. package/dist/agents/coding.agent.d.ts.map +1 -1
  8. package/dist/agents/finance.agent.d.ts +60 -0
  9. package/dist/agents/finance.agent.d.ts.map +1 -0
  10. package/dist/agents/finance.agent.js +30 -0
  11. package/dist/agents/finance.agent.js.map +1 -0
  12. package/dist/agents/manager.d.ts +94 -1
  13. package/dist/agents/manager.d.ts.map +1 -1
  14. package/dist/agents/manager.js +102 -36
  15. package/dist/agents/manager.js.map +1 -1
  16. package/dist/agents/swarm/engineering/qa.d.ts +3 -0
  17. package/dist/agents/swarm/engineering/qa.d.ts.map +1 -0
  18. package/dist/agents/swarm/engineering/qa.js +19 -0
  19. package/dist/agents/swarm/engineering/qa.js.map +1 -0
  20. package/dist/agents/swarm/growth/seo.d.ts +3 -0
  21. package/dist/agents/swarm/growth/seo.d.ts.map +1 -0
  22. package/dist/agents/swarm/growth/seo.js +19 -0
  23. package/dist/agents/swarm/growth/seo.js.map +1 -0
  24. package/dist/agents/swarm/main.d.ts +22 -0
  25. package/dist/agents/swarm/main.d.ts.map +1 -0
  26. package/dist/agents/swarm/main.js +65 -0
  27. package/dist/agents/swarm/main.js.map +1 -0
  28. package/dist/agents/swarm/operations/finance.d.ts +3 -0
  29. package/dist/agents/swarm/operations/finance.d.ts.map +1 -0
  30. package/dist/agents/swarm/operations/finance.js +19 -0
  31. package/dist/agents/swarm/operations/finance.js.map +1 -0
  32. package/dist/agents/swarm/registry.d.ts +4 -0
  33. package/dist/agents/swarm/registry.d.ts.map +1 -0
  34. package/dist/agents/swarm/registry.js +361 -0
  35. package/dist/agents/swarm/registry.js.map +1 -0
  36. package/dist/cli/chat.d.ts +2 -0
  37. package/dist/cli/chat.d.ts.map +1 -0
  38. package/dist/cli/chat.js +61 -0
  39. package/dist/cli/chat.js.map +1 -0
  40. package/dist/cli/composer.d.ts.map +1 -1
  41. package/dist/cli/composer.js +54 -4
  42. package/dist/cli/composer.js.map +1 -1
  43. package/dist/cli/doctor.d.ts.map +1 -1
  44. package/dist/cli/doctor.js +13 -0
  45. package/dist/cli/doctor.js.map +1 -1
  46. package/dist/cli/format.d.ts.map +1 -1
  47. package/dist/cli/format.js +46 -53
  48. package/dist/cli/format.js.map +1 -1
  49. package/dist/cli/interactive.d.ts.map +1 -1
  50. package/dist/cli/interactive.js +51 -6
  51. package/dist/cli/interactive.js.map +1 -1
  52. package/dist/cli/models.d.ts +1 -1
  53. package/dist/cli/models.d.ts.map +1 -1
  54. package/dist/cli/models.js +21 -21
  55. package/dist/cli/models.js.map +1 -1
  56. package/dist/cli/prompt.d.ts +2 -2
  57. package/dist/cli/prompt.d.ts.map +1 -1
  58. package/dist/cli/prompt.js +58 -14
  59. package/dist/cli/prompt.js.map +1 -1
  60. package/dist/cli/render.d.ts.map +1 -1
  61. package/dist/cli/render.js +25 -17
  62. package/dist/cli/render.js.map +1 -1
  63. package/dist/cli/setup.d.ts +1 -0
  64. package/dist/cli/setup.d.ts.map +1 -1
  65. package/dist/cli/setup.js +74 -2
  66. package/dist/cli/setup.js.map +1 -1
  67. package/dist/cli/swarm.d.ts +4 -0
  68. package/dist/cli/swarm.d.ts.map +1 -0
  69. package/dist/cli/swarm.js +21 -0
  70. package/dist/cli/swarm.js.map +1 -0
  71. package/dist/cli/theme.d.ts +67 -1
  72. package/dist/cli/theme.d.ts.map +1 -1
  73. package/dist/cli/theme.js +66 -4
  74. package/dist/cli/theme.js.map +1 -1
  75. package/dist/cli/tunnel.d.ts.map +1 -1
  76. package/dist/cli/tunnel.js +2 -1
  77. package/dist/cli/tunnel.js.map +1 -1
  78. package/dist/cli/voice.js +11 -11
  79. package/dist/cli/welcome.d.ts.map +1 -1
  80. package/dist/cli/welcome.js +2 -0
  81. package/dist/cli/welcome.js.map +1 -1
  82. package/dist/config/model-store.d.ts +1 -1
  83. package/dist/config/model-store.d.ts.map +1 -1
  84. package/dist/config/model-store.js +14 -1
  85. package/dist/config/model-store.js.map +1 -1
  86. package/dist/config/models.d.ts +7 -0
  87. package/dist/config/models.d.ts.map +1 -1
  88. package/dist/config/models.js +30 -6
  89. package/dist/config/models.js.map +1 -1
  90. package/dist/documents/pdf.d.ts.map +1 -1
  91. package/dist/documents/pdf.js +143 -41
  92. package/dist/documents/pdf.js.map +1 -1
  93. package/dist/index.js +19 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist/jobs/anomaly.js +5 -5
  96. package/dist/memory/heal.js +43 -43
  97. package/dist/observability/doctor.d.ts +3 -0
  98. package/dist/observability/doctor.d.ts.map +1 -0
  99. package/dist/observability/doctor.js +33 -0
  100. package/dist/observability/doctor.js.map +1 -0
  101. package/dist/observability/usage.d.ts +13 -0
  102. package/dist/observability/usage.d.ts.map +1 -0
  103. package/dist/observability/usage.js +34 -0
  104. package/dist/observability/usage.js.map +1 -0
  105. package/dist/runtime/chat-bridge.d.ts +32 -0
  106. package/dist/runtime/chat-bridge.d.ts.map +1 -0
  107. package/dist/runtime/chat-bridge.js +92 -0
  108. package/dist/runtime/chat-bridge.js.map +1 -0
  109. package/dist/runtime/confirm.d.ts.map +1 -1
  110. package/dist/runtime/confirm.js +12 -2
  111. package/dist/runtime/confirm.js.map +1 -1
  112. package/dist/runtime/progress.d.ts.map +1 -1
  113. package/dist/runtime/progress.js +3 -1
  114. package/dist/runtime/progress.js.map +1 -1
  115. package/dist/runtime/prompts/builder.d.ts +11 -0
  116. package/dist/runtime/prompts/builder.d.ts.map +1 -0
  117. package/dist/runtime/prompts/builder.js +29 -0
  118. package/dist/runtime/prompts/builder.js.map +1 -0
  119. package/dist/runtime/registry.d.ts +14 -0
  120. package/dist/runtime/registry.d.ts.map +1 -0
  121. package/dist/runtime/registry.js +39 -0
  122. package/dist/runtime/registry.js.map +1 -0
  123. package/dist/runtime/storage/interface.d.ts +16 -0
  124. package/dist/runtime/storage/interface.d.ts.map +1 -0
  125. package/dist/runtime/storage/interface.js +19 -0
  126. package/dist/runtime/storage/interface.js.map +1 -0
  127. package/dist/runtime/storage/local.d.ts +12 -0
  128. package/dist/runtime/storage/local.d.ts.map +1 -0
  129. package/dist/runtime/storage/local.js +48 -0
  130. package/dist/runtime/storage/local.js.map +1 -0
  131. package/dist/runtime/storage/redis.d.ts +11 -0
  132. package/dist/runtime/storage/redis.d.ts.map +1 -0
  133. package/dist/runtime/storage/redis.js +21 -0
  134. package/dist/runtime/storage/redis.js.map +1 -0
  135. package/dist/runtime/swarm/reports.d.ts +9 -0
  136. package/dist/runtime/swarm/reports.d.ts.map +1 -0
  137. package/dist/runtime/swarm/reports.js +43 -0
  138. package/dist/runtime/swarm/reports.js.map +1 -0
  139. package/dist/runtime/swarm.d.ts +38 -0
  140. package/dist/runtime/swarm.d.ts.map +1 -0
  141. package/dist/runtime/swarm.js +110 -0
  142. package/dist/runtime/swarm.js.map +1 -0
  143. package/dist/runtime/telemetry.d.ts +15 -0
  144. package/dist/runtime/telemetry.d.ts.map +1 -0
  145. package/dist/runtime/telemetry.js +25 -0
  146. package/dist/runtime/telemetry.js.map +1 -0
  147. package/dist/runtime/tool-utils.d.ts +12 -0
  148. package/dist/runtime/tool-utils.d.ts.map +1 -0
  149. package/dist/runtime/tool-utils.js +31 -0
  150. package/dist/runtime/tool-utils.js.map +1 -0
  151. package/dist/tools/browser.tool.d.ts +54 -0
  152. package/dist/tools/browser.tool.d.ts.map +1 -0
  153. package/dist/tools/browser.tool.js +193 -0
  154. package/dist/tools/browser.tool.js.map +1 -0
  155. package/dist/tools/business-apps.tool.d.ts +18 -0
  156. package/dist/tools/business-apps.tool.d.ts.map +1 -0
  157. package/dist/tools/business-apps.tool.js +43 -0
  158. package/dist/tools/business-apps.tool.js.map +1 -0
  159. package/dist/tools/computer-use.tool.js +66 -66
  160. package/dist/tools/cross-app-ledger.tool.d.ts +7 -0
  161. package/dist/tools/cross-app-ledger.tool.d.ts.map +1 -0
  162. package/dist/tools/cross-app-ledger.tool.js +70 -0
  163. package/dist/tools/cross-app-ledger.tool.js.map +1 -0
  164. package/dist/tools/daytona-browser.tool.d.ts +113 -0
  165. package/dist/tools/daytona-browser.tool.d.ts.map +1 -0
  166. package/dist/tools/daytona-browser.tool.js +348 -0
  167. package/dist/tools/daytona-browser.tool.js.map +1 -0
  168. package/dist/tools/desktop.tool.js +10 -10
  169. package/dist/tools/documents.tool.js +5 -5
  170. package/dist/tools/finance.tool.d.ts +18 -0
  171. package/dist/tools/finance.tool.d.ts.map +1 -0
  172. package/dist/tools/finance.tool.js +88 -0
  173. package/dist/tools/finance.tool.js.map +1 -0
  174. package/dist/tools/image-intelligence.tool.d.ts +12 -0
  175. package/dist/tools/image-intelligence.tool.d.ts.map +1 -0
  176. package/dist/tools/image-intelligence.tool.js +62 -0
  177. package/dist/tools/image-intelligence.tool.js.map +1 -0
  178. package/dist/tools/notify.tool.js +8 -8
  179. package/dist/tools/osint-install.tool.js +8 -8
  180. package/dist/tools/pentest-install.tool.js +6 -6
  181. package/dist/tools/setup-assistant.tool.d.ts +1 -1
  182. package/dist/tools/shell.tool.d.ts +18 -0
  183. package/dist/tools/shell.tool.d.ts.map +1 -1
  184. package/dist/tools/shell.tool.js +34 -0
  185. package/dist/tools/shell.tool.js.map +1 -1
  186. package/dist/tools/swarm-collaboration.tool.d.ts +29 -0
  187. package/dist/tools/swarm-collaboration.tool.d.ts.map +1 -0
  188. package/dist/tools/swarm-collaboration.tool.js +88 -0
  189. package/dist/tools/swarm-collaboration.tool.js.map +1 -0
  190. package/dist/tools/swarm-memory.tool.d.ts +16 -0
  191. package/dist/tools/swarm-memory.tool.d.ts.map +1 -0
  192. package/dist/tools/swarm-memory.tool.js +31 -0
  193. package/dist/tools/swarm-memory.tool.js.map +1 -0
  194. package/dist/tools/swarm-ops.tool.d.ts +20 -0
  195. package/dist/tools/swarm-ops.tool.d.ts.map +1 -0
  196. package/dist/tools/swarm-ops.tool.js +55 -0
  197. package/dist/tools/swarm-ops.tool.js.map +1 -0
  198. package/dist/tools/triggers.tool.d.ts.map +1 -1
  199. package/dist/tools/visual-audit.tool.d.ts +24 -0
  200. package/dist/tools/visual-audit.tool.d.ts.map +1 -0
  201. package/dist/tools/visual-audit.tool.js +48 -0
  202. package/dist/tools/visual-audit.tool.js.map +1 -0
  203. package/dist/tools/web-intelligence.tool.d.ts +12 -0
  204. package/dist/tools/web-intelligence.tool.d.ts.map +1 -0
  205. package/dist/tools/web-intelligence.tool.js +27 -0
  206. package/dist/tools/web-intelligence.tool.js.map +1 -0
  207. package/dist/workspace/init.js +18 -18
  208. package/dist/workspace/output-paths.d.ts +1 -1
  209. package/dist/workspace/output-paths.d.ts.map +1 -1
  210. package/dist/workspace/output-paths.js +1 -0
  211. package/dist/workspace/output-paths.js.map +1 -1
  212. package/dist/workspace/paths.d.ts +1 -0
  213. package/dist/workspace/paths.d.ts.map +1 -1
  214. package/dist/workspace/paths.js +1 -0
  215. package/dist/workspace/paths.js.map +1 -1
  216. package/install.ps1 +62 -62
  217. package/package.json +107 -103
  218. package/scripts/postinstall.mjs +42 -42
  219. package/scripts/release-github.mjs +91 -91
  220. package/src/doc/README.md +49 -49
  221. package/src/doc/admin-tools-and-sms-campaigns.md +99 -99
  222. package/src/doc/escalation-checklist.md +97 -97
  223. package/src/doc/payments-and-payouts.md +82 -82
  224. package/src/doc/shift-lifecycle-and-disputes.md +95 -95
  225. package/src/doc/support-macros.md +40 -40
  226. package/src/doc/venue-support-playbook.md +145 -145
  227. package/src/doc/verification-and-trust.md +88 -88
  228. package/src/doc/worker-support-playbook.md +159 -159
@@ -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
+
@@ -1,97 +1,97 @@
1
- # Escalation Checklist
2
-
3
- Use this checklist before escalating to engineering, operations, compliance, or payments.
4
-
5
- ## Required Information
6
-
7
- - User type: worker or venue.
8
- - User email or phone.
9
- - Country.
10
- - City/town.
11
- - Page or feature.
12
- - Exact error message.
13
- - Time and date of issue.
14
- - Browser/device if relevant.
15
- - Screenshots if available.
16
-
17
- ## Shift Escalation
18
-
19
- Include:
20
-
21
- - Shift role.
22
- - Shift date/time.
23
- - Venue/company name.
24
- - Worker name.
25
- - Application status.
26
- - Shift status.
27
- - Clock-in/out records.
28
- - Payment ID if available.
29
-
30
- ## Verification Escalation
31
-
32
- Include:
33
-
34
- - Country.
35
- - Verification provider: Ghana/Hubtel or Didit.
36
- - Current status.
37
- - Whether front/back/liveness completed.
38
- - Whether account name matches ID name.
39
- - Any rejection reason.
40
-
41
- Do not include full ID number in normal support tickets.
42
-
43
- ## Payment Escalation
44
-
45
- Include:
46
-
47
- - Provider: Hubtel, Paystack, Razorpay, Stripe.
48
- - Amount and currency.
49
- - Reference/checkout ID/payment ID.
50
- - User ID.
51
- - Shift ID if related.
52
- - Provider response.
53
- - Whether money was captured, pending, failed, refunded, or paid out.
54
-
55
- ## SMS Escalation
56
-
57
- Include:
58
-
59
- - Audience: workers, venues, or both.
60
- - Test or batch.
61
- - Sender ID.
62
- - Normalized phone number.
63
- - Hubtel response details.
64
- - Gateway PM2 log line.
65
- - Whether account has SMS credit.
66
-
67
- ## Fraud Or Abuse Escalation
68
-
69
- Escalate immediately if:
70
-
71
- - Duplicate accounts suspected.
72
- - Same ID used by multiple accounts.
73
- - Same payout account used by multiple unrelated workers.
74
- - Referral farming suspected.
75
- - Worker changes name around verification.
76
- - Venue asks users to pay off-platform.
77
- - Harassment, threats, unsafe venue, or unsafe worker behavior reported.
78
-
79
- ## Engineering Escalation Format
80
-
81
- Use this format:
82
-
83
- ```text
84
- Issue:
85
- User type:
86
- Country/city:
87
- User ID/email:
88
- Shift ID/payment ID:
89
- Expected behavior:
90
- Actual behavior:
91
- Exact error:
92
- Steps to reproduce:
93
- Logs/response:
94
- Impact:
95
- Urgency:
96
- ```
97
-
1
+ # Escalation Checklist
2
+
3
+ Use this checklist before escalating to engineering, operations, compliance, or payments.
4
+
5
+ ## Required Information
6
+
7
+ - User type: worker or venue.
8
+ - User email or phone.
9
+ - Country.
10
+ - City/town.
11
+ - Page or feature.
12
+ - Exact error message.
13
+ - Time and date of issue.
14
+ - Browser/device if relevant.
15
+ - Screenshots if available.
16
+
17
+ ## Shift Escalation
18
+
19
+ Include:
20
+
21
+ - Shift role.
22
+ - Shift date/time.
23
+ - Venue/company name.
24
+ - Worker name.
25
+ - Application status.
26
+ - Shift status.
27
+ - Clock-in/out records.
28
+ - Payment ID if available.
29
+
30
+ ## Verification Escalation
31
+
32
+ Include:
33
+
34
+ - Country.
35
+ - Verification provider: Ghana/Hubtel or Didit.
36
+ - Current status.
37
+ - Whether front/back/liveness completed.
38
+ - Whether account name matches ID name.
39
+ - Any rejection reason.
40
+
41
+ Do not include full ID number in normal support tickets.
42
+
43
+ ## Payment Escalation
44
+
45
+ Include:
46
+
47
+ - Provider: Hubtel, Paystack, Razorpay, Stripe.
48
+ - Amount and currency.
49
+ - Reference/checkout ID/payment ID.
50
+ - User ID.
51
+ - Shift ID if related.
52
+ - Provider response.
53
+ - Whether money was captured, pending, failed, refunded, or paid out.
54
+
55
+ ## SMS Escalation
56
+
57
+ Include:
58
+
59
+ - Audience: workers, venues, or both.
60
+ - Test or batch.
61
+ - Sender ID.
62
+ - Normalized phone number.
63
+ - Hubtel response details.
64
+ - Gateway PM2 log line.
65
+ - Whether account has SMS credit.
66
+
67
+ ## Fraud Or Abuse Escalation
68
+
69
+ Escalate immediately if:
70
+
71
+ - Duplicate accounts suspected.
72
+ - Same ID used by multiple accounts.
73
+ - Same payout account used by multiple unrelated workers.
74
+ - Referral farming suspected.
75
+ - Worker changes name around verification.
76
+ - Venue asks users to pay off-platform.
77
+ - Harassment, threats, unsafe venue, or unsafe worker behavior reported.
78
+
79
+ ## Engineering Escalation Format
80
+
81
+ Use this format:
82
+
83
+ ```text
84
+ Issue:
85
+ User type:
86
+ Country/city:
87
+ User ID/email:
88
+ Shift ID/payment ID:
89
+ Expected behavior:
90
+ Actual behavior:
91
+ Exact error:
92
+ Steps to reproduce:
93
+ Logs/response:
94
+ Impact:
95
+ Urgency:
96
+ ```
97
+