atmn 1.1.3 → 1.1.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.
@@ -149,81 +149,61 @@ type PriceWithAmount = PriceBaseFields & {
149
149
  /** Cannot have tiers when using flat amount */
150
150
  tiers?: never;
151
151
  };
152
- type PriceWithGraduatedTiers = PriceBaseFields & {
152
+ type PriceWithTiers = PriceBaseFields & {
153
153
  /** Cannot have flat amount when using tiers */
154
154
  amount?: never;
155
- /** Graduated tiered pricing: each tier's amount applies only to units within that tier */
155
+ /** Tiered pricing structure based on usage ranges */
156
156
  tiers: Array<{
157
157
  to: number | "inf";
158
158
  amount: number;
159
159
  }>;
160
- /** Graduated: each tier's rate applies only to usage within that tier */
161
- tierBehavior: "graduated";
160
+ /** Required when tiers is defined: how tiers are applied */
161
+ tierBehaviour: "graduated" | "volume";
162
162
  };
163
- type PriceWithVolumeTiers = Omit<PriceBaseFields, "billingMethod"> & {
164
- /** Volume pricing does not support usage_based billing — use 'prepaid' */
165
- billingMethod: Exclude<BillingMethod, "usage_based">;
166
- /** Cannot have flat amount when using tiers */
167
- amount?: never;
168
- /** Volume tiered pricing: the tier the total usage falls into applies to all units */
169
- tiers: Array<{
170
- to: number | "inf";
171
- amount: number;
172
- flatAmount?: number;
173
- }>;
174
- /** Volume: the rate of the tier the total usage falls into applies to all units */
175
- tierBehavior: "volume";
176
- };
177
- type PriceWithTiers = PriceWithGraduatedTiers | PriceWithVolumeTiers;
178
163
  type PriceAmountOrTiers = PriceWithAmount | PriceWithTiers;
179
- type PriceWithoutInterval = PriceAmountOrTiers & {
180
- /** Cannot have interval when using top-level reset */
181
- interval?: never;
182
- intervalCount?: never;
183
- };
184
- type PriceWithInterval = PriceAmountOrTiers & {
185
- /** Billing interval - required when no top-level reset */
186
- interval: BillingInterval;
164
+ type Price = PriceAmountOrTiers & {
165
+ /** Billing interval - omit for one-off pricing */
166
+ interval?: BillingInterval;
187
167
  /** Number of intervals between billing cycles (default: 1) */
188
168
  intervalCount?: number;
189
169
  };
190
170
  /**
191
- * Plan item with top-level reset configuration.
192
- * Use this for free allocations or features that reset but aren't priced per-use.
171
+ * Plan item with a reset cycle (e.g. 100 messages per month).
172
+ * Cannot have price reset and price are mutually exclusive.
193
173
  */
194
174
  export type PlanItemWithReset = PlanItemBaseFields & {
195
- /** Reset configuration for usage limits */
175
+ /** Reset configuration for the included allowance */
196
176
  reset: ResetConfig;
197
- /** Optional pricing (cannot have price.interval when using top-level reset) */
198
- price?: PriceWithoutInterval;
177
+ /** Cannot have price when using reset — use price.interval instead */
178
+ price?: never;
199
179
  };
200
180
  /**
201
- * Plan item with pricing that includes interval configuration.
202
- * Use this for usage-based pricing where interval determines billing cycle.
181
+ * Plan item with usage-based pricing (e.g. $0.10/message, billed monthly).
182
+ * price.interval encodes the billing cycle, so reset is not allowed.
203
183
  */
204
- export type PlanItemWithPriceInterval = PlanItemBaseFields & {
205
- /** Cannot have top-level reset when using price.interval */
184
+ export type PlanItemWithPrice = PlanItemBaseFields & {
185
+ /** Cannot have reset when using price — price.interval encodes the billing cycle */
206
186
  reset?: never;
207
- /** Pricing configuration with billing interval */
208
- price: PriceWithInterval;
187
+ /** Pricing configuration */
188
+ price: Price;
209
189
  };
210
190
  /**
211
- * Plan item without any reset configuration.
212
- * Use this for continuous-use features (like seats) that don't reset.
191
+ * Plan item with no reset and no price.
192
+ * Use for continuous-use or boolean features (e.g. seats, feature flags).
213
193
  */
214
194
  export type PlanItemNoReset = PlanItemBaseFields & {
215
195
  /** No reset for continuous-use features */
216
196
  reset?: never;
217
- /** Pricing with required interval (since no top-level reset) */
218
- price?: PriceWithInterval;
197
+ /** No price for free/boolean features */
198
+ price?: never;
219
199
  };
220
200
  /**
221
- * Plan item configuration with mutually exclusive reset patterns:
222
- * - PlanItemWithReset: Top-level reset (for free allocations)
223
- * - PlanItemWithPriceInterval: price.interval (for usage-based pricing billing cycle)
224
- * - PlanItemNoReset: No reset (for continuous-use features like seats)
201
+ * Plan item configuration. reset and price are mutually exclusive:
202
+ * - PlanItemWithReset: included allowance that resets on an interval (e.g. 100/month free)
203
+ * - PlanItemWithPrice: usage-based pricing with its own billing cycle
204
+ * - PlanItemNoReset: no reset, no price (continuous-use or boolean features)
225
205
  */
226
- export type PlanItem = PlanItemWithReset | PlanItemWithPriceInterval | PlanItemNoReset;
206
+ export type PlanItem = PlanItemWithReset | PlanItemWithPrice | PlanItemNoReset;
227
207
  export type FreeTrial = z.infer<typeof FreeTrialSchema>;
228
208
  export type Plan = {
229
209
  /** Unique identifier for the plan. */
@@ -0,0 +1 @@
1
+ {"version":"7.0.0-dev.20260318.1","root":["../src/cli.tsx","../src/constants.ts","../src/commands/auth/command.ts","../src/commands/auth/constants.ts","../src/commands/auth/oauth.ts","../src/commands/config/command.ts","../src/commands/customers/command.tsx","../src/commands/customers/headless.ts","../src/commands/customers/index.ts","../src/commands/events/command.tsx","../src/commands/events/headless.ts","../src/commands/events/index.ts","../src/commands/events-aggregate-test/command.ts","../src/commands/events-aggregate-test/index.ts","../src/commands/features/command.tsx","../src/commands/features/headless.ts","../src/commands/features/index.ts","../src/commands/nuke/backup.ts","../src/commands/nuke/deletions.ts","../src/commands/nuke/legacynuke.ts","../src/commands/nuke/types.ts","../src/commands/nuke/validation.ts","../src/commands/preview/displayutils.ts","../src/commands/preview/index.ts","../src/commands/preview/loadconfig.ts","../src/commands/preview/planitemtoitem.ts","../src/commands/preview/previewplan.ts","../src/commands/products/command.tsx","../src/commands/products/headless.ts","../src/commands/products/index.ts","../src/commands/pull/index.ts","../src/commands/pull/mergeenvironments.ts","../src/commands/pull/pull.ts","../src/commands/pull/pullfromenvironment.ts","../src/commands/pull/sdktypes.ts","../src/commands/pull/types.ts","../src/commands/pull/writeconfig.ts","../src/commands/push/headless.ts","../src/commands/push/index.ts","../src/commands/push/prompts.ts","../src/commands/push/push.ts","../src/commands/push/types.ts","../src/commands/push/validate.ts","../src/commands/test-diff/command.ts","../src/commands/test-diff/index.ts","../src/commands/test-template/command.tsx","../src/compose/index.ts","../src/compose/builders/builderfunctions.ts","../src/compose/models/featuremodels.ts","../src/compose/models/index.ts","../src/compose/models/planmodels.ts","../src/lib/utils.ts","../src/lib/version.ts","../src/lib/writeemptyconfig.ts","../src/lib/animation/explosion.ts","../src/lib/api/client.ts","../src/lib/api/endpoints/customers.ts","../src/lib/api/endpoints/events.ts","../src/lib/api/endpoints/features.ts","../src/lib/api/endpoints/index.ts","../src/lib/api/endpoints/organization.ts","../src/lib/api/endpoints/plans.ts","../src/lib/api/types/feature.ts","../src/lib/api/types/index.ts","../src/lib/api/types/organization.ts","../src/lib/api/types/plan.ts","../src/lib/api/types/planitem.ts","../src/lib/auth/headlessauthrecovery.ts","../src/lib/constants/templates.ts","../src/lib/constants/templates/index.ts","../src/lib/constants/templates/linear.config.ts","../src/lib/constants/templates/openai.config.ts","../src/lib/constants/templates/railway.config.ts","../src/lib/constants/templates/t3chat.config.ts","../src/lib/env/clicontext.ts","../src/lib/env/detect.ts","../src/lib/env/dotenv.ts","../src/lib/env/index.ts","../src/lib/env/keys.ts","../src/lib/headless/customerscontroller.ts","../src/lib/headless/featurescontroller.ts","../src/lib/headless/planscontroller.ts","../src/lib/headless/index.ts","../src/lib/headless/types.ts","../src/lib/hooks/index.ts","../src/lib/hooks/useagentsetup.ts","../src/lib/hooks/useauthrecovery.ts","../src/lib/hooks/useclipboard.ts","../src/lib/hooks/useconfigcounts.ts","../src/lib/hooks/usecreateguides.ts","../src/lib/hooks/usecreateskills.ts","../src/lib/hooks/usecustomerexpanded.ts","../src/lib/hooks/usecustomernavigation.ts","../src/lib/hooks/usecustomers.ts","../src/lib/hooks/useenvironmentstore.ts","../src/lib/hooks/useevents.ts","../src/lib/hooks/useeventsaggregate.ts","../src/lib/hooks/useeventsaggregateapi.ts","../src/lib/hooks/useeventsfilter.ts","../src/lib/hooks/usefeatures.ts","../src/lib/hooks/usehascustomers.ts","../src/lib/hooks/useheadlessauth.ts","../src/lib/hooks/uselistnavigation.ts","../src/lib/hooks/uselogin.ts","../src/lib/hooks/usenuke.ts","../src/lib/hooks/usenukedata.ts","../src/lib/hooks/useorganization.ts","../src/lib/hooks/useplans.ts","../src/lib/hooks/usepull.ts","../src/lib/hooks/usepush.ts","../src/lib/hooks/useterminalsize.ts","../src/lib/hooks/usevisiblerowcount.ts","../src/lib/hooks/usewritetemplateconfig.ts","../src/lib/transforms/index.ts","../src/lib/transforms/apitosdk/transformer.test.ts","../src/lib/transforms/apitosdk/transformer.ts","../src/lib/transforms/apitosdk/feature.ts","../src/lib/transforms/apitosdk/helpers.ts","../src/lib/transforms/apitosdk/index.ts","../src/lib/transforms/apitosdk/plan.ts","../src/lib/transforms/apitosdk/planitem.ts","../src/lib/transforms/inplaceupdate/index.ts","../src/lib/transforms/inplaceupdate/parseconfig.ts","../src/lib/transforms/inplaceupdate/updateconfig.ts","../src/lib/transforms/sdktoapi/feature.ts","../src/lib/transforms/sdktoapi/index.ts","../src/lib/transforms/sdktoapi/plan.ts","../src/lib/transforms/sdktocode/configfile.ts","../src/lib/transforms/sdktocode/feature.ts","../src/lib/transforms/sdktocode/helpers.ts","../src/lib/transforms/sdktocode/imports.ts","../src/lib/transforms/sdktocode/index.ts","../src/lib/transforms/sdktocode/plan.ts","../src/lib/transforms/sdktocode/planitem.ts","../src/lib/utils/index.ts","../src/lib/utils/monorepo.ts","../src/prompts/skills/autumn-billing-page.ts","../src/prompts/skills/autumn-gating.ts","../src/prompts/skills/autumn-modelling-pricing-plans.ts","../src/prompts/skills/autumn-setup.ts","../src/prompts/skills/index.ts","../src/views/app.tsx","../src/views/html/oauth-callback.ts","../src/views/react/test-agent.tsx","../src/views/react/components/authrecoveryboundary.tsx","../src/views/react/components/card.tsx","../src/views/react/components/keyvalue.tsx","../src/views/react/components/loadingtext.tsx","../src/views/react/components/promptcard.tsx","../src/views/react/components/selectmenu.tsx","../src/views/react/components/statusline.tsx","../src/views/react/components/statusrow.tsx","../src/views/react/components/stepheader.tsx","../src/views/react/components/index.ts","../src/views/react/components/providers/cardwidthcontext.tsx","../src/views/react/components/providers/queryprovider.tsx","../src/views/react/components/providers/index.ts","../src/views/react/customers/customersview.tsx","../src/views/react/customers/types.ts","../src/views/react/customers/components/customerrow.tsx","../src/views/react/customers/components/customersheet.tsx","../src/views/react/customers/components/customerstable.tsx","../src/views/react/customers/components/emptystate.tsx","../src/views/react/customers/components/errorstate.tsx","../src/views/react/customers/components/keybindhints.tsx","../src/views/react/customers/components/loadingstate.tsx","../src/views/react/customers/components/searchinput.tsx","../src/views/react/customers/components/titlebar.tsx","../src/views/react/customers/components/index.ts","../src/views/react/customers/components/sections/balancessection.tsx","../src/views/react/customers/components/sections/entitiessection.tsx","../src/views/react/customers/components/sections/invoicessection.tsx","../src/views/react/customers/components/sections/referralssection.tsx","../src/views/react/customers/components/sections/rewardssection.tsx","../src/views/react/customers/components/sections/subscriptionssection.tsx","../src/views/react/customers/components/sections/index.ts","../src/views/react/events/eventsview.tsx","../src/views/react/events/index.ts","../src/views/react/events/components/eventsheet.tsx","../src/views/react/events/components/eventsaggregateview.tsx","../src/views/react/events/components/eventsfiltersheet.tsx","../src/views/react/events/components/index.ts","../src/views/react/features/featuresview.tsx","../src/views/react/features/index.ts","../src/views/react/features/components/featuresheet.tsx","../src/views/react/features/components/index.ts","../src/views/react/init/headlessinitflow.tsx","../src/views/react/init/initflow.tsx","../src/views/react/init/steps/agentstep.tsx","../src/views/react/init/steps/authstep.tsx","../src/views/react/init/steps/configstep.tsx","../src/views/react/init/steps/handoffstep.tsx","../src/views/react/init/steps/pathinputstep.tsx","../src/views/react/init/steps/stripestep.tsx","../src/views/react/login/loginview.tsx","../src/views/react/nuke/inlinenukeflow.tsx","../src/views/react/nuke/nukeanimation.tsx","../src/views/react/nuke/nukeview.tsx","../src/views/react/nuke/components/backupprompt.tsx","../src/views/react/nuke/components/confirmscreen.tsx","../src/views/react/nuke/components/deletionprogress.tsx","../src/views/react/nuke/components/finalsummary.tsx","../src/views/react/nuke/components/successscreen.tsx","../src/views/react/nuke/components/warningscreen.tsx","../src/views/react/preview/planpreviewcard.tsx","../src/views/react/preview/previewview.tsx","../src/views/react/preview/index.ts","../src/views/react/primitives/index.ts","../src/views/react/primitives/input/searchinput.tsx","../src/views/react/primitives/input/index.ts","../src/views/react/primitives/layout/bottombar.tsx","../src/views/react/primitives/layout/listviewlayout.tsx","../src/views/react/primitives/layout/splitpane.tsx","../src/views/react/primitives/layout/titlebar.tsx","../src/views/react/primitives/layout/index.ts","../src/views/react/primitives/sheet/detailsheet.tsx","../src/views/react/primitives/sheet/sheetsection.tsx","../src/views/react/primitives/sheet/index.ts","../src/views/react/primitives/states/emptystate.tsx","../src/views/react/primitives/states/errorstate.tsx","../src/views/react/primitives/states/loadingstate.tsx","../src/views/react/primitives/states/index.ts","../src/views/react/primitives/table/datatable.tsx","../src/views/react/primitives/table/tablerow.tsx","../src/views/react/primitives/table/index.ts","../src/views/react/primitives/utils/formatdate.ts","../src/views/react/primitives/utils/index.ts","../src/views/react/primitives/utils/pagination.ts","../src/views/react/primitives/utils/truncate.ts","../src/views/react/products/productsview.tsx","../src/views/react/products/index.ts","../src/views/react/products/components/productsheet.tsx","../src/views/react/products/components/index.ts","../src/views/react/pull/pull.tsx","../src/views/react/pull/components/featurerow.tsx","../src/views/react/pull/components/filerow.tsx","../src/views/react/pull/components/planrow.tsx","../src/views/react/pull/components/index.ts","../src/views/react/push/push.tsx","../src/views/react/push/index.ts","../src/views/react/push/components/completionmessage.tsx","../src/views/react/push/components/errorcard.tsx","../src/views/react/push/components/featurescard.tsx","../src/views/react/push/components/nochangescard.tsx","../src/views/react/push/components/orgcard.tsx","../src/views/react/push/components/overviewcard.tsx","../src/views/react/push/components/planscard.tsx","../src/views/react/push/components/pushpromptcard.tsx","../src/views/react/push/components/index.ts","../src/views/react/template/templateselector.tsx","../src/views/react/template2/badge.tsx","../src/views/react/template2/plancard.tsx","../src/views/react/template2/templaterow.tsx","../src/views/react/template2/templateselector2.tsx","../src/views/react/template2/data.ts","../src/views/react/template2/index.ts"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atmn",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "license": "MIT",
5
5
  "bin": {
6
6
  "atmn": "dist/cli.js"
@@ -12,11 +12,24 @@
12
12
  "homepage": "https://docs.useautumn.com/api-reference/cli/getting-started",
13
13
  "main": "dist/compose/index.js",
14
14
  "types": "dist/src/compose/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/src/compose/index.d.ts",
18
+ "import": "./dist/compose/index.js",
19
+ "default": "./dist/compose/index.js"
20
+ },
21
+ "./skills": {
22
+ "types": "./src/prompts/skills/index.ts",
23
+ "import": "./src/prompts/skills/index.ts",
24
+ "default": "./src/prompts/skills/index.ts"
25
+ }
26
+ },
15
27
  "type": "module",
16
28
  "engines": {
17
29
  "node": ">=16"
18
30
  },
19
31
  "scripts": {
32
+ "ts": "bunx tsgo --build --noEmit",
20
33
  "build": "bun run bun.config.ts",
21
34
  "dev": "nodemon -e ts,tsx --watch src --ignore dist --exec \"bun run bun.config.ts\"",
22
35
  "dev:bun": "bun run dev.ts",
@@ -64,10 +77,12 @@
64
77
  "conf": "^13.0.1"
65
78
  },
66
79
  "devDependencies": {
80
+ "@autumn/shared": "1.0.0",
67
81
  "@sindresorhus/tsconfig": "^3.0.1",
68
- "@types/bun": "^1.2.21",
82
+ "@types/bun": "^1.3.10",
69
83
  "@types/node": "^24.0.10",
70
84
  "@types/react": "^19.0.0",
85
+ "@typescript/native-preview": "^7.0.0-dev.20260316.1",
71
86
  "@vdemedes/prettier-config": "^2.0.1",
72
87
  "ava": "^5.2.0",
73
88
  "cli-testing-library": "^3.0.1",
package/dist/index.js DELETED
@@ -1,104 +0,0 @@
1
- import { createRequire } from "node:module";
2
- var __create = Object.create;
3
- var __getProtoOf = Object.getPrototypeOf;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- function __accessProp(key) {
8
- return this[key];
9
- }
10
- var __toESMCache_node;
11
- var __toESMCache_esm;
12
- var __toESM = (mod, isNodeMode, target) => {
13
- var canCache = mod != null && typeof mod === "object";
14
- if (canCache) {
15
- var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
- var cached = cache.get(mod);
17
- if (cached)
18
- return cached;
19
- }
20
- target = mod != null ? __create(__getProtoOf(mod)) : {};
21
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
22
- for (let key of __getOwnPropNames(mod))
23
- if (!__hasOwnProp.call(to, key))
24
- __defProp(to, key, {
25
- get: __accessProp.bind(mod, key),
26
- enumerable: true
27
- });
28
- if (canCache)
29
- cache.set(mod, to);
30
- return to;
31
- };
32
- var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
33
- var __returnValue = (v) => v;
34
- function __exportSetter(name, newValue) {
35
- this[name] = __returnValue.bind(null, newValue);
36
- }
37
- var __export = (target, all) => {
38
- for (var name in all)
39
- __defProp(target, name, {
40
- get: all[name],
41
- enumerable: true,
42
- configurable: true,
43
- set: __exportSetter.bind(all, name)
44
- });
45
- };
46
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
47
-
48
- // source/compose/builders/builderFunctions.ts
49
- var product = (p) => p;
50
- var feature = (f) => f;
51
- var featureItem = ({
52
- feature_id,
53
- included_usage,
54
- interval,
55
- reset_usage_when_enabled,
56
- entity_feature_id
57
- }) => {
58
- return {
59
- included_usage,
60
- feature_id,
61
- interval,
62
- reset_usage_when_enabled,
63
- entity_feature_id
64
- };
65
- };
66
- var pricedFeatureItem = ({
67
- feature_id,
68
- price,
69
- tiers,
70
- interval,
71
- included_usage = undefined,
72
- billing_units = 1,
73
- usage_model = "pay_per_use",
74
- reset_usage_when_enabled,
75
- entity_feature_id
76
- }) => {
77
- return {
78
- price,
79
- tiers,
80
- interval,
81
- billing_units,
82
- feature_id,
83
- usage_model,
84
- included_usage,
85
- reset_usage_when_enabled,
86
- entity_feature_id
87
- };
88
- };
89
- var priceItem = ({
90
- price,
91
- interval
92
- }) => {
93
- return {
94
- price,
95
- interval
96
- };
97
- };
98
- export {
99
- product,
100
- pricedFeatureItem,
101
- priceItem,
102
- featureItem,
103
- feature
104
- };