@ishlabs/cli 0.23.0 → 0.23.1
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/dist/commands/workspace.js +12 -7
- package/dist/lib/docs.js +24 -11
- package/dist/lib/skill-content.js +1 -1
- package/package.json +1 -1
|
@@ -175,6 +175,8 @@ Examples:
|
|
|
175
175
|
Usage counters:
|
|
176
176
|
studies_used / studies_max — current study count vs the user's plan cap
|
|
177
177
|
people_used / people_max — workspace-private participant profile count vs cap
|
|
178
|
+
concurrent_participants_max — max in-flight participants per dispatch
|
|
179
|
+
workspace_members_max — max workspace members (seats)
|
|
178
180
|
|
|
179
181
|
Caps fall back to null when the user's plan grants unlimited (math.inf). The
|
|
180
182
|
account tier is read from /account/me; limit tables come from /billing/limits.
|
|
@@ -196,7 +198,11 @@ Examples:
|
|
|
196
198
|
if (usage.tier)
|
|
197
199
|
console.log(`Plan: ${usage.tier}`);
|
|
198
200
|
console.log(`Studies: ${usage.studies_used} / ${renderCap(usage.studies_max)}`);
|
|
199
|
-
console.log(`Custom people:
|
|
201
|
+
console.log(`Custom people: ${usage.people_used} / ${renderCap(usage.people_max)}`);
|
|
202
|
+
if (usage.concurrent_participants_max !== null)
|
|
203
|
+
console.log(`Max concurrent: ${renderCap(usage.concurrent_participants_max)}`);
|
|
204
|
+
if (usage.workspace_members_max !== null)
|
|
205
|
+
console.log(`Max members: ${renderCap(usage.workspace_members_max)}`);
|
|
200
206
|
});
|
|
201
207
|
});
|
|
202
208
|
workspace
|
|
@@ -276,19 +282,18 @@ async function collectWorkspaceUsage(client, workspaceId) {
|
|
|
276
282
|
]);
|
|
277
283
|
const tier = typeof account.credits?.tier === "string" ? account.credits.tier : null;
|
|
278
284
|
const tierTable = tier ? limits.tiers?.[tier] ?? null : null;
|
|
279
|
-
const
|
|
280
|
-
const peopleMax = tierTable && "maxCustomPersons" in tierTable
|
|
281
|
-
? tierTable.maxCustomPersons
|
|
282
|
-
: null;
|
|
285
|
+
const lookupLimit = (key) => tierTable && key in tierTable ? tierTable[key] : null;
|
|
283
286
|
return {
|
|
284
287
|
id: workspaceId,
|
|
285
288
|
name: product?.name ?? null,
|
|
286
289
|
base_url: product?.base_url ?? null,
|
|
287
290
|
tier,
|
|
288
291
|
studies_used: Array.isArray(studies) ? studies.length : 0,
|
|
289
|
-
studies_max:
|
|
292
|
+
studies_max: lookupLimit("maxStudiesPerProduct"),
|
|
290
293
|
people_used: typeof participants.total === "number" ? participants.total : 0,
|
|
291
|
-
people_max:
|
|
294
|
+
people_max: lookupLimit("maxCustomPersons"),
|
|
295
|
+
concurrent_participants_max: lookupLimit("maxConcurrentParticipants"),
|
|
296
|
+
workspace_members_max: lookupLimit("maxWorkspaceMembers"),
|
|
292
297
|
};
|
|
293
298
|
}
|
|
294
299
|
// ---------------------------------------------------------------------------
|
package/dist/lib/docs.js
CHANGED
|
@@ -113,15 +113,17 @@ ish workspace info --json
|
|
|
113
113
|
{
|
|
114
114
|
"studies_used": 2,
|
|
115
115
|
"studies_max": 3,
|
|
116
|
-
"
|
|
117
|
-
"
|
|
116
|
+
"people_used": 0,
|
|
117
|
+
"people_max": 3,
|
|
118
|
+
"concurrent_participants_max": 3,
|
|
119
|
+
"workspace_members_max": 1,
|
|
118
120
|
"tier": "free"
|
|
119
121
|
}
|
|
120
122
|
\`\`\`
|
|
121
123
|
|
|
122
124
|
A \`null\` value on a \`*_max\` field means "unlimited" (paid tiers).
|
|
123
125
|
Branch on \`studies_used >= studies_max\` before \`study create\`,
|
|
124
|
-
likewise for \`
|
|
126
|
+
likewise for \`people_used\` before \`study run --sample\`.
|
|
125
127
|
|
|
126
128
|
## Cold start — \`workspace_create\` is not safe to call blind
|
|
127
129
|
|
|
@@ -3027,16 +3029,21 @@ The \`formula\` key is stable: agents can branch on it (\`media_per_participant\
|
|
|
3027
3029
|
|
|
3028
3030
|
## Tier allotments
|
|
3029
3031
|
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
|
3035
|
-
|
|
3032
|
+
Paid tiers use **dynamic credit budgets** — the user selects a credit
|
|
3033
|
+
bucket at subscription time. The table shows the range of available
|
|
3034
|
+
buckets per tier:
|
|
3035
|
+
|
|
3036
|
+
| Tier | Monthly credits | Notes |
|
|
3037
|
+
|-------------|---------------------------|--------------------------------------|
|
|
3038
|
+
| FREE | 200 (one-time signup) | Never refilled |
|
|
3039
|
+
| STARTER | 200 – 2,500 / month | User selects bucket (solo, 1 seat) |
|
|
3040
|
+
| PRO | 500 – 10,000 / month | User selects bucket (team, 10 seats) |
|
|
3041
|
+
| ENTERPRISE | unlimited | Custom contract |
|
|
3036
3042
|
|
|
3037
3043
|
The CLI does not enforce these — the backend does. The CLI's job is to
|
|
3038
3044
|
*preview*, so an agent doesn't dispatch a 5,000-credit run on a
|
|
3039
|
-
200-credit account.
|
|
3045
|
+
200-credit account. The actual credit budget for a given account depends
|
|
3046
|
+
on which bucket the user chose — query \`workspace info\` for headroom.
|
|
3040
3047
|
|
|
3041
3048
|
## Insufficient-credit rejection shape
|
|
3042
3049
|
|
|
@@ -3116,12 +3123,18 @@ request time, for any client, is the backend's \`TIER_LIMITS\` dict in
|
|
|
3116
3123
|
| \`maxProducts\` | 1 | 1 | ∞ | ∞ | ∞ |
|
|
3117
3124
|
| \`maxStudiesPerProduct\` | 3 | ∞ | ∞ | ∞ | ∞ |
|
|
3118
3125
|
| \`maxIterationsPerStudy\` | 2 | ∞ | ∞ | ∞ | ∞ |
|
|
3119
|
-
| \`maxCustomPersons\`
|
|
3126
|
+
| \`maxCustomPersons\` | 3 | 10 | 10 | ∞ | ∞ |
|
|
3127
|
+
| \`maxConcurrentParticipants\` | 3 | 3 | 10 | 50 | ∞ |
|
|
3128
|
+
| \`maxWorkspaceMembers\` | 1 | 1 | 1 | 10 | ∞ |
|
|
3120
3129
|
|
|
3121
3130
|
Commands that may hit a limit: \`ish workspace create\`,
|
|
3122
3131
|
\`ish study create\`, \`ish study generate\`, \`ish iteration create\`,
|
|
3123
3132
|
\`ish person create\`, \`ish person generate\`.
|
|
3124
3133
|
|
|
3134
|
+
\`maxConcurrentParticipants\` gates how many participants can be in-flight
|
|
3135
|
+
at once per dispatch. \`maxWorkspaceMembers\` gates workspace membership
|
|
3136
|
+
(seats). Both are enforced server-side.
|
|
3137
|
+
|
|
3125
3138
|
## What you see when a limit is hit
|
|
3126
3139
|
|
|
3127
3140
|
Human output (stderr):
|
|
@@ -585,7 +585,7 @@ also in \`study poll --json\`. Branch on it instead of treating
|
|
|
585
585
|
\`interaction_count: 0\` as a generic failure.
|
|
586
586
|
|
|
587
587
|
Pre-flight tip: \`ish workspace info\` exposes
|
|
588
|
-
\`{studies_used, studies_max,
|
|
588
|
+
\`{studies_used, studies_max, people_used, people_max, concurrent_participants_max, workspace_members_max, tier}\` so
|
|
589
589
|
you can branch on plan caps before \`study create\` returns
|
|
590
590
|
\`error_code: usage_limit_reached\`.
|
|
591
591
|
|