aiox-core 5.0.7 → 5.0.8
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/.aiox-core/cli/commands/pro/buyer.js +379 -0
- package/.aiox-core/cli/commands/pro/index.js +191 -52
- package/.aiox-core/cli/commands/validate/index.js +2 -0
- package/.aiox-core/core/code-intel/helpers/dev-helper.js +1 -1
- package/.aiox-core/core/code-intel/helpers/devops-helper.js +0 -1
- package/.aiox-core/core/code-intel/helpers/planning-helper.js +1 -1
- package/.aiox-core/core/code-intel/helpers/qa-helper.js +2 -2
- package/.aiox-core/core/config/schemas/framework-config.schema.json +1 -0
- package/.aiox-core/core/config/template-overrides.js +1 -1
- package/.aiox-core/core/doctor/checks/ide-sync.js +81 -25
- package/.aiox-core/core/doctor/checks/rules-files.js +0 -1
- package/.aiox-core/core/doctor/checks/skills-count.js +83 -15
- package/.aiox-core/core/graph-dashboard/cli.js +1 -2
- package/.aiox-core/core/graph-dashboard/data-sources/code-intel-source.js +1 -1
- package/.aiox-core/core/ids/layer-classifier.js +1 -1
- package/.aiox-core/core/pro/pro-updater.js +578 -0
- package/.aiox-core/core/synapse/context/context-tracker.js +107 -9
- package/.aiox-core/core/synapse/layers/layer-processor.js +1 -1
- package/.aiox-core/core-config.yaml +15 -1
- package/.aiox-core/data/capability-detection.js +15 -15
- package/.aiox-core/data/entity-registry.yaml +18 -2
- package/.aiox-core/data/registry-update-log.jsonl +5 -0
- package/.aiox-core/data/tok3-token-comparison.js +0 -4
- package/.aiox-core/data/tool-search-validation.js +1 -1
- package/.aiox-core/development/agents/aiox-master.md +44 -6
- package/.aiox-core/development/agents/data-engineer.md +4 -4
- package/.aiox-core/development/agents/devops.md +52 -2
- package/.aiox-core/development/agents/po.md +1 -1
- package/.aiox-core/development/agents/qa.md +5 -11
- package/.aiox-core/development/agents/sm.md +3 -3
- package/.aiox-core/development/agents/ux-design-expert.md +1 -1
- package/.aiox-core/development/scripts/unified-activation-pipeline.js +29 -3
- package/.aiox-core/development/tasks/dev-develop-story.md +46 -7
- package/.aiox-core/development/tasks/devops-pro-access-grant.md +93 -0
- package/.aiox-core/development/tasks/devops-pro-activate.md +42 -0
- package/.aiox-core/development/tasks/devops-pro-check-access.md +34 -0
- package/.aiox-core/development/tasks/devops-pro-request-reset.md +34 -0
- package/.aiox-core/development/tasks/devops-pro-resend-verification.md +32 -0
- package/.aiox-core/development/tasks/devops-pro-reset-password.md +36 -0
- package/.aiox-core/development/tasks/devops-pro-validate-login.md +36 -0
- package/.aiox-core/development/tasks/devops-pro-verify-status.md +33 -0
- package/.aiox-core/development/tasks/qa-gate.md +54 -4
- package/.aiox-core/development/tasks/validate-next-story.md +39 -2
- package/.aiox-core/framework-config.yaml +1 -0
- package/.aiox-core/infrastructure/scripts/codex-skills-sync/README.md +69 -0
- package/.aiox-core/infrastructure/scripts/codex-skills-sync/bootstrap.js +727 -0
- package/.aiox-core/infrastructure/scripts/codex-skills-sync/index.js +10 -0
- package/.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js +65 -4
- package/.aiox-core/infrastructure/scripts/generate-settings-json.js +29 -4
- package/.aiox-core/infrastructure/scripts/ide-sync/agent-parser.js +4 -0
- package/.aiox-core/infrastructure/scripts/ide-sync/index.js +67 -7
- package/.aiox-core/infrastructure/scripts/ide-sync/transformers/claude-code.js +145 -3
- package/.aiox-core/infrastructure/scripts/repair-agent-references.js +263 -0
- package/.aiox-core/infrastructure/scripts/validate-claude-integration.js +60 -8
- package/.aiox-core/infrastructure/scripts/validate-paths.js +13 -0
- package/.aiox-core/install-manifest.yaml +134 -82
- package/.aiox-core/utils/filters/index.js +2 -1
- package/.claude/commands/AIOX/agents/aiox-master.md +21 -0
- package/.claude/commands/AIOX/agents/analyst.md +21 -0
- package/.claude/commands/AIOX/agents/architect.md +21 -0
- package/.claude/commands/AIOX/agents/data-engineer.md +21 -0
- package/.claude/commands/AIOX/agents/dev.md +21 -0
- package/.claude/commands/AIOX/agents/devops.md +21 -0
- package/.claude/commands/AIOX/agents/pm.md +21 -0
- package/.claude/commands/AIOX/agents/po.md +21 -0
- package/.claude/commands/AIOX/agents/qa.md +21 -0
- package/.claude/commands/AIOX/agents/sm.md +21 -0
- package/.claude/commands/AIOX/agents/squad-creator.md +21 -0
- package/.claude/commands/AIOX/agents/ux-design-expert.md +21 -0
- package/.claude/commands/AIOX/scripts/agent-config-loader.js +624 -0
- package/.claude/commands/AIOX/scripts/generate-greeting.js +160 -0
- package/.claude/commands/AIOX/scripts/greeting-builder.js +866 -0
- package/.claude/commands/AIOX/scripts/session-context-loader.js +286 -0
- package/.claude/commands/AIOX/stories/story-6.1.4.md +1404 -0
- package/.claude/commands/cohort-squad/agents/cohort-manager.md +156 -0
- package/.claude/commands/design-system/agents/brad-frost.md +1097 -0
- package/.claude/commands/design-system/agents/dan-mall.md +857 -0
- package/.claude/commands/design-system/agents/dave-malouf.md +2272 -0
- package/.claude/commands/design-system/agents/design-chief.md +102 -0
- package/.claude/commands/design-system/agents/nano-banana-generator.md +162 -0
- package/.claude/commands/greet.md +101 -0
- package/.claude/commands/synapse/manager.md +75 -0
- package/.claude/commands/synapse/tasks/add-rule.md +94 -0
- package/.claude/commands/synapse/tasks/create-command.md +109 -0
- package/.claude/commands/synapse/tasks/create-domain.md +127 -0
- package/.claude/commands/synapse/tasks/diagnose-synapse.md +245 -0
- package/.claude/commands/synapse/tasks/edit-rule.md +109 -0
- package/.claude/commands/synapse/tasks/suggest-domain.md +116 -0
- package/.claude/commands/synapse/tasks/toggle-domain.md +83 -0
- package/.claude/commands/synapse/templates/domain-template +8 -0
- package/.claude/commands/synapse/templates/manifest-entry-template +4 -0
- package/.claude/commands/synapse/utils/manifest-parser-reference.md +134 -0
- package/.claude/hooks/precompact-session-digest.cjs +2 -2
- package/.claude/skills/AIOX/agents/aiox-master/SKILL.md +511 -0
- package/.claude/skills/AIOX/agents/analyst/SKILL.md +281 -0
- package/.claude/skills/AIOX/agents/architect/SKILL.md +482 -0
- package/.claude/skills/AIOX/agents/data-engineer/SKILL.md +503 -0
- package/.claude/skills/AIOX/agents/dev/SKILL.md +568 -0
- package/.claude/skills/AIOX/agents/devops/SKILL.md +597 -0
- package/.claude/skills/AIOX/agents/pm/SKILL.md +385 -0
- package/.claude/skills/AIOX/agents/po/SKILL.md +343 -0
- package/.claude/skills/AIOX/agents/qa/SKILL.md +451 -0
- package/.claude/skills/AIOX/agents/sm/SKILL.md +295 -0
- package/.claude/skills/AIOX/agents/squad-creator/SKILL.md +352 -0
- package/.claude/skills/AIOX/agents/ux-design-expert/SKILL.md +503 -0
- package/.claude/skills/architect-first/SKILL.md +275 -0
- package/.claude/skills/architect-first/assets/architecture-template.md +505 -0
- package/.claude/skills/architect-first/assets/config-template.yaml +351 -0
- package/.claude/skills/architect-first/references/architecture-checklist.md +216 -0
- package/.claude/skills/architect-first/references/pre-implementation-checklist.md +119 -0
- package/.claude/skills/architect-first/references/stop-rules-guide.md +291 -0
- package/.claude/skills/architect-first/references/testing-strategy-guide.md +477 -0
- package/.claude/skills/architect-first/scripts/architecture_validator.py +490 -0
- package/.claude/skills/architect-first/scripts/check_coupling.py +306 -0
- package/.claude/skills/architect-first/scripts/validate_risk_mitigation.py +382 -0
- package/.claude/skills/checklist-runner/SKILL.md +113 -0
- package/.claude/skills/clone-mind.md +329 -0
- package/.claude/skills/coderabbit-review/SKILL.md +106 -0
- package/.claude/skills/course-generation-workflow.md +76 -0
- package/.claude/skills/enhance-workflow.md +466 -0
- package/.claude/skills/mcp-builder/LICENSE.txt +202 -0
- package/.claude/skills/mcp-builder/SKILL.md +328 -0
- package/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
- package/.claude/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
- package/.claude/skills/mcp-builder/reference/node_mcp_server.md +916 -0
- package/.claude/skills/mcp-builder/reference/python_mcp_server.md +752 -0
- package/.claude/skills/mcp-builder/scripts/connections.py +151 -0
- package/.claude/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/.claude/skills/ralph.md +181 -0
- package/.claude/skills/skill-creator/LICENSE.txt +202 -0
- package/.claude/skills/skill-creator/SKILL.md +209 -0
- package/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
- package/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/.claude/skills/squad.md +301 -0
- package/.claude/skills/synapse/SKILL.md +132 -0
- package/.claude/skills/synapse/assets/README.md +50 -0
- package/.claude/skills/synapse/references/brackets.md +100 -0
- package/.claude/skills/synapse/references/commands.md +118 -0
- package/.claude/skills/synapse/references/domains.md +126 -0
- package/.claude/skills/synapse/references/layers.md +186 -0
- package/.claude/skills/synapse/references/manifest.md +142 -0
- package/.claude/skills/tech-search/SKILL.md +431 -0
- package/.claude/skills/tech-search/prompts/page-extract.md +133 -0
- package/README.en.md +2 -2
- package/README.md +8 -2
- package/bin/aiox.js +55 -4
- package/bin/utils/framework-guard.js +4 -2
- package/bin/utils/pro-detector.js +119 -28
- package/bin/utils/validate-publish.js +6 -6
- package/docs/aiox-agent-flows/devops-system.md +18 -0
- package/docs/aiox-workflows/README.md +1 -0
- package/docs/aiox-workflows/pro-access-grant-workflow.md +218 -0
- package/docs/guides/pro/access-grant-ops-playbook.md +370 -0
- package/docs/guides/pro/install-gate-setup.md +12 -6
- package/docs/guides/pro/squad-creator-handoff-pro-access-ops.md +134 -0
- package/docs/guides/supabase-ops-handoff.md +768 -0
- package/package.json +12 -1
- package/packages/aiox-pro-cli/bin/aiox-pro.js +33 -12
- package/packages/installer/src/config/configure-environment.js +118 -50
- package/packages/installer/src/installer/aiox-core-installer.js +124 -27
- package/packages/installer/src/installer/brownfield-upgrader.js +66 -9
- package/packages/installer/src/installer/dependency-installer.js +4 -0
- package/packages/installer/src/pro/pro-scaffolder.js +5 -5
- package/packages/installer/src/updater/index.js +151 -10
- package/packages/installer/src/wizard/ide-config-generator.js +73 -7
- package/packages/installer/src/wizard/index.js +119 -31
- package/packages/installer/src/wizard/pro-setup.js +118 -47
- package/packages/installer/src/wizard/validation/validators/dependency-validator.js +32 -25
- package/packages/installer/src/wizard/validation/validators/file-structure-validator.js +26 -0
- package/packages/installer/tests/unit/artifact-copy-pipeline/artifact-copy-pipeline.test.js +84 -1
- package/packages/installer/tests/unit/claude-md-template-v5/claude-md-template-v5.test.js +1 -1
- package/packages/installer/tests/unit/doctor/doctor-checks.test.js +85 -19
- package/packages/installer/tests/unit/entity-registry-bootstrap.test.js +4 -4
- package/packages/installer/tests/unit/generate-settings-json/generate-settings-json.test.js +5 -5
- package/packages/installer/tests/unit/ide-sync-integration/ide-sync-integration.test.js +4 -4
- package/packages/installer/tests/unit/merger/yaml-merger.test.js +11 -11
- package/pro/README.md +12 -1
- package/pro/license/index.js +3 -11
- package/pro/license/license-api.js +25 -0
- package/pro/license/license-cache.js +135 -31
- package/pro/license/license-crypto.js +59 -3
- package/pro/package.json +5 -4
- package/pro/squads/README.md +16 -16
- package/pro/squads/index.js +1 -1
- package/scripts/e2e/installed-skills-smoke.js +264 -0
- package/scripts/package-synapse.js +3 -3
- package/scripts/validate-package-completeness.js +8 -11
- package/.aiox-core/lib/build.json +0 -1
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
# Playbook: AIOX Pro Access Grant Ops
|
|
2
|
+
|
|
3
|
+
**Status:** Validated on 2026-04-20
|
|
4
|
+
**Primary operator:** `@devops`
|
|
5
|
+
**Source story:** `PRO-11.1`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Objective
|
|
10
|
+
|
|
11
|
+
Grant or restore AIOX Pro access for a user without rediscovering the backend flow each time.
|
|
12
|
+
|
|
13
|
+
This playbook is based on the live contract validated against:
|
|
14
|
+
|
|
15
|
+
- License server: `https://aiox-license-server.vercel.app`
|
|
16
|
+
- Vercel project: `aiox-license-server`
|
|
17
|
+
- Vercel project id: `prj_URy89BjALJ8vMKcYQHJa1N2GLXle`
|
|
18
|
+
- Vercel team id: `team_KZMs9FZJuVgsxQFZZp8I1p9t`
|
|
19
|
+
- Supabase project ref: `evvvnarpwcdybxdvcwjh`
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## System Of Record
|
|
24
|
+
|
|
25
|
+
### Backend tables and auth surfaces
|
|
26
|
+
|
|
27
|
+
- `public.buyers`
|
|
28
|
+
- Entitlement oracle for buyer status.
|
|
29
|
+
- Required by `validate_buyer` and by `POST /api/v1/auth/check-email`.
|
|
30
|
+
- `public.buyer_validations`
|
|
31
|
+
- Local 24h cache and support fallback.
|
|
32
|
+
- Can be used as a positive local override when the upstream buyer RPC is unavailable.
|
|
33
|
+
- `auth.users`
|
|
34
|
+
- Account existence oracle.
|
|
35
|
+
- `licenses`
|
|
36
|
+
- Active Pro license storage.
|
|
37
|
+
- `POST /api/v1/auth/activate-pro` creates a license when missing and is idempotent when one already exists.
|
|
38
|
+
|
|
39
|
+
### Live auth endpoints
|
|
40
|
+
|
|
41
|
+
- `POST /api/v1/auth/check-email`
|
|
42
|
+
- Request: `{ "email": "user@example.com" }`
|
|
43
|
+
- Response: `{ isBuyer, hasAccount, email }`
|
|
44
|
+
- `POST /api/v1/auth/login`
|
|
45
|
+
- Request: `{ "email": "...", "password": "..." }`
|
|
46
|
+
- Response includes `accessToken`
|
|
47
|
+
- `POST /api/v1/auth/verify-status`
|
|
48
|
+
- Request: `{ "accessToken": "..." }`
|
|
49
|
+
- Response: `{ email, emailVerified }`
|
|
50
|
+
- `POST /api/v1/auth/activate-pro`
|
|
51
|
+
- Request: `{ "accessToken": "...", "machineId": "...", "version": "...", "aioxCoreVersion": "..." }`
|
|
52
|
+
- Response on first activation: `201` with `licenseKey`
|
|
53
|
+
- Response on reinstall: `200` with existing `licenseKey`
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Decision Tree
|
|
58
|
+
|
|
59
|
+
### Case A: `isBuyer=false` and `hasAccount=false`
|
|
60
|
+
|
|
61
|
+
You must grant entitlement first, then create the account.
|
|
62
|
+
|
|
63
|
+
1. Upsert a positive row in `public.buyers`.
|
|
64
|
+
2. Create or confirm the auth user with the requested password.
|
|
65
|
+
3. Confirm the email.
|
|
66
|
+
4. Optionally seed `public.buyer_validations` if you want a local support override immediately available.
|
|
67
|
+
5. Validate with `check-email`, `login`, `verify-status`, and `activate-pro`.
|
|
68
|
+
|
|
69
|
+
### Case B: `isBuyer=true` and `hasAccount=false`
|
|
70
|
+
|
|
71
|
+
The entitlement already exists. Only create the auth user, confirm email, and validate.
|
|
72
|
+
|
|
73
|
+
### Case C: `isBuyer=true` and `hasAccount=true`
|
|
74
|
+
|
|
75
|
+
The user already exists. Only reset password if requested, confirm email status if needed, then validate `login` and `activate-pro`.
|
|
76
|
+
|
|
77
|
+
### Case D: `check-email` fails with buyer service unavailable
|
|
78
|
+
|
|
79
|
+
Treat this as an upstream buyer validation issue.
|
|
80
|
+
|
|
81
|
+
1. Confirm `public.buyers` contains an active row for the email.
|
|
82
|
+
2. Seed `public.buyer_validations` with `is_valid=true` for the target user.
|
|
83
|
+
3. Retry `check-email` and `activate-pro`.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Step-By-Step Operator Runbook
|
|
88
|
+
|
|
89
|
+
## Dedicated DevOps Aliases
|
|
90
|
+
|
|
91
|
+
For repeat operations, prefer these `@devops` commands:
|
|
92
|
+
|
|
93
|
+
- `@devops *pro-access-grant EMAIL SENHA`
|
|
94
|
+
- `@devops *pro-check-access EMAIL`
|
|
95
|
+
- `@devops *pro-request-reset EMAIL`
|
|
96
|
+
- `@devops *pro-resend-verification EMAIL`
|
|
97
|
+
- `@devops *pro-reset-password EMAIL NOVA_SENHA`
|
|
98
|
+
- `@devops *pro-validate-login EMAIL SENHA`
|
|
99
|
+
- `@devops *pro-verify-status ACCESS_TOKEN`
|
|
100
|
+
- `@devops *pro-activate ACCESS_TOKEN [MACHINE_ID] [VERSION]`
|
|
101
|
+
|
|
102
|
+
### 1. Preflight
|
|
103
|
+
|
|
104
|
+
Run:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
curl -sS https://aiox-license-server.vercel.app/api/v1/auth/check-email \
|
|
108
|
+
-H 'content-type: application/json' \
|
|
109
|
+
-d '{"email":"TARGET_EMAIL"}'
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Expected outputs:
|
|
113
|
+
|
|
114
|
+
- `isBuyer=true` means entitlement exists.
|
|
115
|
+
- `hasAccount=true` means `auth.users` already contains the email.
|
|
116
|
+
|
|
117
|
+
### 2. Grant buyer entitlement in Supabase
|
|
118
|
+
|
|
119
|
+
Use the Supabase SQL editor for project `evvvnarpwcdybxdvcwjh` and run:
|
|
120
|
+
|
|
121
|
+
```sql
|
|
122
|
+
insert into public.buyers (email, source, is_active, metadata)
|
|
123
|
+
values (
|
|
124
|
+
lower(trim('TARGET_EMAIL')),
|
|
125
|
+
'manual_support',
|
|
126
|
+
true,
|
|
127
|
+
jsonb_build_object(
|
|
128
|
+
'granted_by', 'devops',
|
|
129
|
+
'reason', 'manual_aiox_pro_access_grant',
|
|
130
|
+
'granted_at', now()
|
|
131
|
+
)
|
|
132
|
+
)
|
|
133
|
+
on conflict (email)
|
|
134
|
+
do update set
|
|
135
|
+
source = excluded.source,
|
|
136
|
+
is_active = true,
|
|
137
|
+
metadata = coalesce(public.buyers.metadata, '{}'::jsonb) || excluded.metadata;
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Rules:
|
|
141
|
+
|
|
142
|
+
- Always normalize to lowercase email.
|
|
143
|
+
- Always set `is_active = true`.
|
|
144
|
+
- Use `source='manual_support'` for manual support grants.
|
|
145
|
+
|
|
146
|
+
### 3. Create or update the auth user
|
|
147
|
+
|
|
148
|
+
Preferred path: Supabase Auth dashboard for the same project.
|
|
149
|
+
|
|
150
|
+
Required values:
|
|
151
|
+
|
|
152
|
+
- Email: requested customer email
|
|
153
|
+
- Password: requested or support-default password
|
|
154
|
+
- Email confirmed: `true`
|
|
155
|
+
|
|
156
|
+
If the user already exists:
|
|
157
|
+
|
|
158
|
+
- update the password if support explicitly asked for a reset
|
|
159
|
+
- ensure the email is confirmed
|
|
160
|
+
|
|
161
|
+
If you need an API path instead of the dashboard, use the same admin capability the server uses (`supabaseAdmin.auth.admin.createUser`).
|
|
162
|
+
|
|
163
|
+
### 4. Seed the local buyer validation fallback
|
|
164
|
+
|
|
165
|
+
Do this when:
|
|
166
|
+
|
|
167
|
+
- buyer RPC is unstable
|
|
168
|
+
- you want support override resilience
|
|
169
|
+
- `check-email` still returns buyer false right after the grant
|
|
170
|
+
|
|
171
|
+
First fetch the auth user id for the email, then run:
|
|
172
|
+
|
|
173
|
+
```sql
|
|
174
|
+
insert into public.buyer_validations (user_id, email, is_valid, validated_at, expires_at)
|
|
175
|
+
values (
|
|
176
|
+
'TARGET_USER_ID',
|
|
177
|
+
lower(trim('TARGET_EMAIL')),
|
|
178
|
+
true,
|
|
179
|
+
now(),
|
|
180
|
+
now() + interval '24 hours'
|
|
181
|
+
)
|
|
182
|
+
on conflict (user_id)
|
|
183
|
+
do update set
|
|
184
|
+
email = excluded.email,
|
|
185
|
+
is_valid = true,
|
|
186
|
+
validated_at = now(),
|
|
187
|
+
expires_at = now() + interval '24 hours';
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 5. Validate the API flow directly
|
|
191
|
+
|
|
192
|
+
Run in order.
|
|
193
|
+
|
|
194
|
+
#### 5.1 `check-email`
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
curl -sS https://aiox-license-server.vercel.app/api/v1/auth/check-email \
|
|
198
|
+
-H 'content-type: application/json' \
|
|
199
|
+
-d '{"email":"TARGET_EMAIL"}'
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Expected:
|
|
203
|
+
|
|
204
|
+
- `isBuyer=true`
|
|
205
|
+
- `hasAccount=true`
|
|
206
|
+
|
|
207
|
+
#### 5.2 `login`
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
curl -sS https://aiox-license-server.vercel.app/api/v1/auth/login \
|
|
211
|
+
-H 'content-type: application/json' \
|
|
212
|
+
-d '{"email":"TARGET_EMAIL","password":"TARGET_PASSWORD"}'
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Expected:
|
|
216
|
+
|
|
217
|
+
- `200`
|
|
218
|
+
- response contains `accessToken`
|
|
219
|
+
|
|
220
|
+
#### 5.3 `verify-status`
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
curl -sS https://aiox-license-server.vercel.app/api/v1/auth/verify-status \
|
|
224
|
+
-H 'content-type: application/json' \
|
|
225
|
+
-d '{"accessToken":"ACCESS_TOKEN"}'
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Expected:
|
|
229
|
+
|
|
230
|
+
- `emailVerified=true`
|
|
231
|
+
|
|
232
|
+
#### 5.4 `activate-pro`
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
curl -sS https://aiox-license-server.vercel.app/api/v1/auth/activate-pro \
|
|
236
|
+
-H 'content-type: application/json' \
|
|
237
|
+
-d '{
|
|
238
|
+
"accessToken":"ACCESS_TOKEN",
|
|
239
|
+
"machineId":"ops-validation-machine",
|
|
240
|
+
"version":"5.0.3",
|
|
241
|
+
"aioxCoreVersion":"5.0.3"
|
|
242
|
+
}'
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Expected:
|
|
246
|
+
|
|
247
|
+
- first activation: `201` with `licenseKey`
|
|
248
|
+
- reinstall or already-provisioned user: `200` with message similar to `License restored`
|
|
249
|
+
|
|
250
|
+
### 6. Validate the guided installer as the user
|
|
251
|
+
|
|
252
|
+
This story validated both paths below with:
|
|
253
|
+
|
|
254
|
+
- email: `costa.wanderl@gmail.com`
|
|
255
|
+
- password: `AioxPro2026!`
|
|
256
|
+
- result: success in source install and packaged install
|
|
257
|
+
|
|
258
|
+
#### 6.1 Source checkout path
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
node bin/aiox.js install
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Wizard choices used in validation:
|
|
265
|
+
|
|
266
|
+
1. `Portugues`
|
|
267
|
+
2. `Modo Avancado`
|
|
268
|
+
3. `Greenfield`
|
|
269
|
+
4. IDEs: `Claude Code` and `Codex CLI`
|
|
270
|
+
5. tech preset: `nextjs-react`
|
|
271
|
+
6. edition: `Pro`
|
|
272
|
+
7. activation method: `Login ou criar conta`
|
|
273
|
+
8. user email and password
|
|
274
|
+
|
|
275
|
+
Expected success signals:
|
|
276
|
+
|
|
277
|
+
- `Conteudo Pro instalado`
|
|
278
|
+
- final verification report shows `Overall Status: All checks passed`
|
|
279
|
+
- generated project contains:
|
|
280
|
+
- `.claude/skills`
|
|
281
|
+
- `.claude/commands`
|
|
282
|
+
- `.codex/skills`
|
|
283
|
+
|
|
284
|
+
#### 6.2 Packaged tarball path
|
|
285
|
+
|
|
286
|
+
Pack first:
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
npm pack
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Then validate from a clean target directory:
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
npm exec --yes --package=/absolute/path/to/aiox-core-<version>.tgz aiox-core -- install
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
Use the same wizard answers and expect the same success signals.
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## Validated Results From 2026-04-20
|
|
303
|
+
|
|
304
|
+
### Direct API smoke test
|
|
305
|
+
|
|
306
|
+
Validated against production for `costa.wanderl@gmail.com`:
|
|
307
|
+
|
|
308
|
+
- `check-email`: `isBuyer=true`, `hasAccount=true`
|
|
309
|
+
- `login`: `200`, `accessToken` present, `emailVerified=true`
|
|
310
|
+
- `verify-status`: `200`, `emailVerified=true`
|
|
311
|
+
- `activate-pro`: `200`, `activated=true`, existing license restored
|
|
312
|
+
|
|
313
|
+
### Guided installation validation
|
|
314
|
+
|
|
315
|
+
Validated successfully:
|
|
316
|
+
|
|
317
|
+
- source checkout install
|
|
318
|
+
- packaged tarball install
|
|
319
|
+
|
|
320
|
+
The final installer verification passed in both cases and the generated projects contained the expected Claude and Codex assets.
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Troubleshooting
|
|
325
|
+
|
|
326
|
+
### `activate-pro` returns `400 Invalid input: expected string, received undefined`
|
|
327
|
+
|
|
328
|
+
Cause:
|
|
329
|
+
|
|
330
|
+
- outdated client contract
|
|
331
|
+
|
|
332
|
+
Fix:
|
|
333
|
+
|
|
334
|
+
- caller must send `{ accessToken }` in the JSON body
|
|
335
|
+
- newer installer build already does this
|
|
336
|
+
|
|
337
|
+
### `check-email` returns `isBuyer=false` right after granting the user
|
|
338
|
+
|
|
339
|
+
Check:
|
|
340
|
+
|
|
341
|
+
- `public.buyers` row exists and `is_active=true`
|
|
342
|
+
- email normalized to lowercase
|
|
343
|
+
- if buyer RPC is degraded, seed `public.buyer_validations`
|
|
344
|
+
|
|
345
|
+
### `login` works but `verify-status` says not verified
|
|
346
|
+
|
|
347
|
+
Fix:
|
|
348
|
+
|
|
349
|
+
- confirm the user email in Supabase Auth
|
|
350
|
+
|
|
351
|
+
### Installer completes but `.codex/skills` or `.claude/skills` are missing
|
|
352
|
+
|
|
353
|
+
This story fixed the packaging and generation path. Rebuild with the updated installer package and rerun.
|
|
354
|
+
|
|
355
|
+
### Installer emits false dependency warnings in a normal user project
|
|
356
|
+
|
|
357
|
+
This story fixed the dependency validator to avoid flagging installer-internal packages in user projects. Rebuild with the updated package and rerun.
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## Evidence To Attach In Support Closure
|
|
362
|
+
|
|
363
|
+
- `check-email` response
|
|
364
|
+
- `login` response status only
|
|
365
|
+
- `verify-status` response
|
|
366
|
+
- `activate-pro` response status only
|
|
367
|
+
- source guided install result
|
|
368
|
+
- tarball guided install result
|
|
369
|
+
|
|
370
|
+
Do not paste the full `accessToken` or the full `licenseKey` into tickets or chat.
|
|
@@ -19,14 +19,14 @@ Comprar Licenca → Instalar → Ativar → Usar Features Pro
|
|
|
19
19
|
| Pacote | Tipo | Proposito |
|
|
20
20
|
|--------|------|-----------|
|
|
21
21
|
| `aiox-pro` | CLI (1.8 KB) | Comandos de instalacao e gerenciamento |
|
|
22
|
-
| `@aiox-fullstack/pro` | Core (10 MB) |
|
|
22
|
+
| `@aiox-fullstack/pro` | Core (10 MB) | Nome canônico do pacote premium (com fallback legado durante a transição) |
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
26
26
|
## Instalacao Rapida
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
# Instalar AIOX Pro (instala
|
|
29
|
+
# Instalar AIOX Pro (instala o pacote Pro compatível automaticamente)
|
|
30
30
|
npx aiox-pro install
|
|
31
31
|
|
|
32
32
|
# Ativar sua licenca
|
|
@@ -51,12 +51,18 @@ npx aiox-pro status
|
|
|
51
51
|
npx aiox-pro install
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
Isso
|
|
54
|
+
Isso instala o pacote Pro compatível no seu projeto, priorizando o nome canônico e caindo para o legado quando necessário.
|
|
55
55
|
|
|
56
|
-
**Alternativa** (
|
|
56
|
+
**Alternativa** (instalação manual):
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
npm install @aiox-fullstack/pro
|
|
59
|
+
npm install @aiox-fullstack/pro@latest
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Depois da instalação manual, rode o bootstrap do conteúdo Pro no projeto:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npx aiox-pro install
|
|
60
66
|
```
|
|
61
67
|
|
|
62
68
|
### Passo 2: Ativar Licenca
|
|
@@ -88,7 +94,7 @@ npx aiox-pro features
|
|
|
88
94
|
|
|
89
95
|
| Comando | Descricao |
|
|
90
96
|
|---------|-----------|
|
|
91
|
-
| `npx aiox-pro install` | Instala
|
|
97
|
+
| `npx aiox-pro install` | Instala o pacote AIOX Pro compatível no projeto |
|
|
92
98
|
| `npx aiox-pro activate --key KEY` | Ativa uma chave de licenca |
|
|
93
99
|
| `npx aiox-pro status` | Mostra status da licenca atual |
|
|
94
100
|
| `npx aiox-pro features` | Lista todas as features pro e disponibilidade |
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Handoff: Squad Creator -> DevOps Pro Access Ops
|
|
2
|
+
|
|
3
|
+
**Status:** Ready to operationalize
|
|
4
|
+
**Validated on:** 2026-04-20
|
|
5
|
+
**Target squad/task owner:** `@squad-creator` creating reusable surfaces for `@devops`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Objective
|
|
10
|
+
|
|
11
|
+
Convert the validated AIOX Pro access grant procedure into a reusable task/workflow pair so DevOps can execute it repeatedly without rediscovering:
|
|
12
|
+
|
|
13
|
+
- which system is authoritative
|
|
14
|
+
- which tables matter
|
|
15
|
+
- which API contract is current
|
|
16
|
+
- which validations are mandatory
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## What Is Already Validated
|
|
21
|
+
|
|
22
|
+
The following is not speculative. It was validated end-to-end on 2026-04-20:
|
|
23
|
+
|
|
24
|
+
- live license server contract uses `accessToken` in `verify-status` and `activate-pro`
|
|
25
|
+
- `activate-pro` returns `licenseKey`
|
|
26
|
+
- buyer entitlement comes from `public.buyers`
|
|
27
|
+
- local support fallback can be seeded through `public.buyer_validations`
|
|
28
|
+
- `activate-pro` is idempotent and restores existing licenses
|
|
29
|
+
- guided installer passed in:
|
|
30
|
+
- source checkout flow
|
|
31
|
+
- packaged tarball flow
|
|
32
|
+
|
|
33
|
+
Validated customer used in this run:
|
|
34
|
+
|
|
35
|
+
- email: `costa.wanderl@gmail.com`
|
|
36
|
+
- password used for validation: `AioxPro2026!`
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Artifacts To Use As Inputs
|
|
41
|
+
|
|
42
|
+
Squad creator should treat these files as the authoritative seed set:
|
|
43
|
+
|
|
44
|
+
1. `docs/guides/pro/access-grant-ops-playbook.md`
|
|
45
|
+
2. `docs/aiox-workflows/pro-access-grant-workflow.md`
|
|
46
|
+
3. `.aiox-core/development/tasks/devops-pro-access-grant.md`
|
|
47
|
+
4. `docs/stories/PRO-11.1-auth-contract-hardening-and-pro-access-ops.md`
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Required Deliverables
|
|
52
|
+
|
|
53
|
+
Squad creator must create or register:
|
|
54
|
+
|
|
55
|
+
1. A reusable DevOps task for Pro access grants.
|
|
56
|
+
2. Dedicated point-action aliases for common support operations.
|
|
57
|
+
3. A reusable workflow that chains:
|
|
58
|
+
- preflight
|
|
59
|
+
- entitlement grant
|
|
60
|
+
- account setup
|
|
61
|
+
- API validation
|
|
62
|
+
- guided install validation
|
|
63
|
+
4. Clear input schema:
|
|
64
|
+
- `target_email`
|
|
65
|
+
- `target_password`
|
|
66
|
+
- `reset_password`
|
|
67
|
+
- `run_guided_validation`
|
|
68
|
+
5. A closeout/evidence template that never leaks full token or full license key.
|
|
69
|
+
|
|
70
|
+
Minimum alias set now expected:
|
|
71
|
+
|
|
72
|
+
- `*pro-access-grant`
|
|
73
|
+
- `*pro-check-access`
|
|
74
|
+
- `*pro-request-reset`
|
|
75
|
+
- `*pro-resend-verification`
|
|
76
|
+
- `*pro-reset-password`
|
|
77
|
+
- `*pro-validate-login`
|
|
78
|
+
- `*pro-verify-status`
|
|
79
|
+
- `*pro-activate`
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Non-Negotiable Rules
|
|
84
|
+
|
|
85
|
+
Do not let the generated task/workflow drift from these rules:
|
|
86
|
+
|
|
87
|
+
- `public.buyers` is the buyer entitlement oracle.
|
|
88
|
+
- `check-email` and `login` are the preflight validation pair.
|
|
89
|
+
- `verify-status` and `activate-pro` must send `accessToken` in the JSON body.
|
|
90
|
+
- `activate-pro` may return success for an already-activated user; that is correct behavior.
|
|
91
|
+
- Guided validation must assert Claude and Codex assets exist in the installed project.
|
|
92
|
+
- No rediscovery instructions. The output must assume fixed backend context and operator access.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Suggested Registration Shape
|
|
97
|
+
|
|
98
|
+
### Task name
|
|
99
|
+
|
|
100
|
+
- `devops-pro-access-grant`
|
|
101
|
+
|
|
102
|
+
### Workflow name
|
|
103
|
+
|
|
104
|
+
- `pro-access-grant-workflow`
|
|
105
|
+
|
|
106
|
+
### Primary agent
|
|
107
|
+
|
|
108
|
+
- `@devops`
|
|
109
|
+
|
|
110
|
+
### Secondary references
|
|
111
|
+
|
|
112
|
+
- `@qa` only for validating future regressions in installer behavior
|
|
113
|
+
- `@squad-creator` only for packaging and publishing the reusable assets
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Done Criteria
|
|
118
|
+
|
|
119
|
+
The squad creator work is done only when:
|
|
120
|
+
|
|
121
|
+
- the task exists in the canonical task surface
|
|
122
|
+
- the workflow exists in the canonical workflow surface
|
|
123
|
+
- both point back to the validated playbook
|
|
124
|
+
- both preserve the exact decision tree and validation order
|
|
125
|
+
- a DevOps operator can run the process without asking where buyer data, auth state, or activation checks live
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Implementation Notes For Squad Creator
|
|
130
|
+
|
|
131
|
+
- Prefer copying the validated sequence directly instead of rewriting from scratch.
|
|
132
|
+
- Keep the workflow operational, not pedagogical.
|
|
133
|
+
- Keep the task biased toward action and evidence collection.
|
|
134
|
+
- If you add examples, use masked values for tokens and license keys.
|