@apilift/cli 1.4.40-dev.1792138042.e8a4f6750dc5d2eba58515d30b501f737c2846dc → 1.5.0

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.
@@ -27963,7 +27963,7 @@ var init_schema = __esm({
27963
27963
  resourceKindSchema = external_exports.enum(resourceKinds);
27964
27964
  segmentSchema = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,79}$/);
27965
27965
  appSlugSchema = external_exports.string().regex(/^[a-z][a-z0-9-]{0,79}$/);
27966
- actionNameSchema = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,79}\.[a-z][a-z0-9_-]{0,79}$/);
27966
+ actionNameSchema = external_exports.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, "Use entity.verb with kebab-case in each part").refine((name) => name.split(".").every((part) => part.length <= 80), "Action name parts must be at most 80 characters");
27967
27967
  generatedNameSchema = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,63}$/);
27968
27968
  inputNameSchema = external_exports.string().regex(/^[A-Za-z][A-Za-z0-9_-]{0,79}$/);
27969
27969
  pointerSchema = external_exports.string().refine((value) => value === "" || value.startsWith("/") && value.split("/").slice(1).every((part) => !/~(?![01])/.test(part)), "Expected a JSON Pointer");
@@ -29399,7 +29399,7 @@ var resourceKinds = ["app", "entity", "action", "transport", "browser-context"];
29399
29399
  var resourceKindSchema = external_exports.enum(resourceKinds);
29400
29400
  var segmentSchema = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,79}$/);
29401
29401
  var appSlugSchema = external_exports.string().regex(/^[a-z][a-z0-9-]{0,79}$/);
29402
- var actionNameSchema = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,79}\.[a-z][a-z0-9_-]{0,79}$/);
29402
+ var actionNameSchema = external_exports.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, "Use entity.verb with kebab-case in each part").refine((name) => name.split(".").every((part) => part.length <= 80), "Action name parts must be at most 80 characters");
29403
29403
  var generatedNameSchema = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,63}$/);
29404
29404
  var inputNameSchema = external_exports.string().regex(/^[A-Za-z][A-Za-z0-9_-]{0,79}$/);
29405
29405
  var pointerSchema = external_exports.string().refine((value) => value === "" || value.startsWith("/") && value.split("/").slice(1).every((part) => !/~(?![01])/.test(part)), "Expected a JSON Pointer");
package/dist/apilift.js CHANGED
@@ -28027,7 +28027,7 @@ var init_schema = __esm({
28027
28027
  resourceKindSchema = external_exports.enum(resourceKinds);
28028
28028
  segmentSchema = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,79}$/);
28029
28029
  appSlugSchema = external_exports.string().regex(/^[a-z][a-z0-9-]{0,79}$/);
28030
- actionNameSchema = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,79}\.[a-z][a-z0-9_-]{0,79}$/);
28030
+ actionNameSchema = external_exports.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, "Use entity.verb with kebab-case in each part").refine((name) => name.split(".").every((part) => part.length <= 80), "Action name parts must be at most 80 characters");
28031
28031
  generatedNameSchema = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,63}$/);
28032
28032
  inputNameSchema = external_exports.string().regex(/^[A-Za-z][A-Za-z0-9_-]{0,79}$/);
28033
28033
  pointerSchema = external_exports.string().refine((value) => value === "" || value.startsWith("/") && value.split("/").slice(1).every((part) => !/~(?![01])/.test(part)), "Expected a JSON Pointer");
@@ -34172,7 +34172,7 @@ async function openDraft(invocation, api, store, session, root, kind, name) {
34172
34172
  if (!current) return fail5(`No discovery app is open. Start with ${command4(invocation, "apps new <app-slug>")} or ${command4(invocation, "apps update <app>")}.
34173
34173
  `);
34174
34174
  if (kind === "app" && name) return fail5("The app draft takes no resource name.\n");
34175
- if (kind === "action" && !actionNameSchema.safeParse(name).success) return fail5(`${actionNameHelp} Use lowercase letters, digits, hyphens or underscores in each part.
34175
+ if (kind === "action" && !actionNameSchema.safeParse(name).success) return fail5(`${actionNameHelp}
34176
34176
  Create or edit it with ${command4(invocation, "discover draft action <entity.verb>")}. No draft was created and no app request was sent.
34177
34177
  `);
34178
34178
  if (kind !== "app" && !name) return fail5(`Name the ${kind} resource.
@@ -34205,7 +34205,7 @@ function researchTables(state) {
34205
34205
  state.db.exec("CREATE TABLE IF NOT EXISTS discovery_research (app_slug TEXT NOT NULL, scope TEXT NOT NULL, file_path TEXT NOT NULL, conclusion TEXT, saved_at TEXT, PRIMARY KEY(app_slug,scope)); CREATE TABLE IF NOT EXISTS selected_discovery_research (session_id TEXT PRIMARY KEY, app_slug TEXT NOT NULL, scope TEXT NOT NULL)");
34206
34206
  }
34207
34207
  function researchPath(root, appSlug, scope2) {
34208
- if (!/^(app|[a-z][a-z0-9_-]{0,79}\.[a-z][a-z0-9_-]{0,79})$/.test(scope2)) throw new Error("Research scope must be app or entity.verb, for example ticket.get");
34208
+ if (scope2 !== "app" && !actionNameSchema.safeParse(scope2).success) throw new Error(`Research scope must be app or an action name. ${actionNameHelp}`);
34209
34209
  return join12(root, "drafts", appSlug, "api", `${scope2}.jsonc`);
34210
34210
  }
34211
34211
  function handleResearch(invocation, state, store, session, root) {
@@ -35303,7 +35303,7 @@ var init_discover = __esm({
35303
35303
  backendKind = (kind) => kind === "browser-page" ? "browser-context" : kind;
35304
35304
  label = (kind) => kind === "transport" ? "connection" : kind === "browser-page" ? "browser page" : kind;
35305
35305
  command4 = (invocation, suffix) => `${commandPrefix(invocation.sessionLabel)} ${suffix}`;
35306
- actionNameHelp = "Action names use entity.verb, for example ticket.get: entity names the domain object and verb names the operation.";
35306
+ actionNameHelp = "Action names use entity.verb with kebab-case in each part, for example support-ticket.get-details: entity names the domain object and verb names the operation.";
35307
35307
  issueLines = (issues) => issues.map((issue2) => ` ${issue2.path}: ${issue2.message}`).join("\n");
35308
35308
  ajv4 = new import__4.default({ allErrors: true, strict: false, coerceTypes: false });
35309
35309
  sessionRequired = (invocation) => fail5(`A stable agent identity is required for discovery. No state changed. Choose a unique worker label and keep it on every command:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apilift",
3
- "version": "1.4.40-dev.1792138042.e8a4f6750dc5d2eba58515d30b501f737c2846dc",
3
+ "version": "1.5.0",
4
4
  "description": "Use logged-in apps and discover missing actions with Apilift.",
5
5
  "author": {
6
6
  "name": "Apilift"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apilift",
3
- "version": "1.4.40-dev.1792138042.e8a4f6750dc5d2eba58515d30b501f737c2846dc",
3
+ "version": "1.5.0",
4
4
  "description": "Use logged-in apps and discover missing actions with Apilift.",
5
5
  "author": {
6
6
  "name": "Apilift"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apilift/cli",
3
- "version": "1.4.40-dev.1792138042.e8a4f6750dc5d2eba58515d30b501f737c2846dc",
3
+ "version": "1.5.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "bin": {
@@ -36,7 +36,7 @@
36
36
  "engines": {
37
37
  "node": ">=24.16.0 <27"
38
38
  },
39
- "gitHead": "e8a4f6750dc5d2eba58515d30b501f737c2846dc",
39
+ "gitHead": "c42fa5b76367755fd456e083943e10356591aa33",
40
40
  "repository": {
41
41
  "type": "git",
42
42
  "url": "git+https://github.com/egor-sergeev/apilift.git",