Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 9 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -456,6 +456,15 @@ The retry logic belongs at a higher level (e.g., the executor, job runner, or AP

Tests must be **strict**. Assert as much as possible—the test should fail if the entire flow didn't pass.

When writing or changing code, think carefully about the real testing strategy: what would actually prove this works, and what would catch meaningful bugs? Do not generate shallow tests just to create coverage; a test that only asserts implementation artifacts, such as checking that a generated CloudFormation template contains a string, is usually worse than no test.

- **No test is better than a meaningless test.**
- Being creative and finding fast, practical ways to truly validate code is one of the hardest parts of engineering, but also one of the most rewarding.
- Prefer validation that exercises real behavior: run `cfn-validate`, generate and inspect the CloudFormation template, verify AWS behavior with web searches, run the relevant end-to-end flow, or deploy and destroy a real stack when appropriate.
- Do the validation yourself whenever possible. Do not call something “manual testing” if you can generate the artifact, inspect it, run commands, search the web, or otherwise verify it directly as the agent.
- When a good validation path is not practical to automate as a test, leave a clear code comment or PR note like: “To test this, generate X, run Y, inspect Z, and verify A/B against AWS docs.”
- If you find existing junk tests, remove them or substantially improve them instead of preserving fake coverage.

### Dangerous Patterns to Avoid

```rust
Expand Down
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,13 @@ Alien provides a better model: **managed self-hosting**.

Install the CLI:

```bash
```bash title="macOS / Linux"
curl -fsSL https://alien.dev/install | sh
export PATH="$HOME/.local/bin:$PATH"
```

```powershell title="Windows"
irm https://alien.dev/install.ps1 | iex
```

Create a project and start developing:
Expand Down
53 changes: 35 additions & 18 deletions client-sdks/manager/typescript/.speakeasy/gen.lock
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
lockVersion: 2.0.0
id: 8940d7e8-6d5d-4ea9-9632-85457ecd75f0
management:
docChecksum: 5130f4ad7cfacafd739f0794b0a14b1b
docChecksum: 65189de8f194a6cfa8a1162baf75746e
docVersion: 1.0.0
speakeasyVersion: 1.680.11
generationVersion: 2.788.15
releaseVersion: 1.2.46
configChecksum: b50afcf480b6e0a5c39ab9580dd27390
releaseVersion: 1.2.47
configChecksum: a147a10ecd704179c4a7d1c93f379b72
persistentEdits:
generation_id: 0e326375-a5c1-407e-8a94-c324de56373b
pristine_commit_hash: f0f4e10dbf5638bb6b1c9a35d50460b86f7faffe
pristine_tree_hash: dd2192f771b3208fec8c2101161b4e2473c61ada
generation_id: 6dd5bc99-5fc6-4df6-b485-1cf92c0de54f
pristine_commit_hash: 54b097a92b7f2c337c9cbc57260d10a8aeb5ec5c
pristine_tree_hash: 6ef0618e46b22c72ae9500e892a7fa807c69af42
features:
typescript:
additionalDependencies: 0.1.0
Expand Down Expand Up @@ -640,6 +640,10 @@ trackedFiles:
id: 345f89238a78
last_write_checksum: sha1:cf4d6c3fc50a4212a8bd27cae6e71998fe99ba02
pristine_git_object: 4a6beae19ce2d47bcc5b7a8d5806001c8079042e
docs/models/listreleasesresponse.md:
id: e809551c35c9
last_write_checksum: sha1:3f7342cbcf6990725b1dfa8fc3492a696e8cf5a8
pristine_git_object: 6e812c208760608dad3ae11b1981f8afb2d2adb9
docs/models/localoperation.md:
id: 685cd167e973
last_write_checksum: sha1:9f71cbaeb53dbf91b204f76a755e0a9589525b00
Expand Down Expand Up @@ -1238,8 +1242,8 @@ trackedFiles:
pristine_git_object: 24a4ad522db681b4e0f95ccabd9026b98c82f944
docs/sdks/releases/README.md:
id: 63d3c821dfd3
last_write_checksum: sha1:5e2a639d15a93fa08984cfd4fd0d9f3d7660d1c3
pristine_git_object: a91c645999a1a82e60499c6f11b72cccb4506ddb
last_write_checksum: sha1:1f85fd6f394cdad7c292b31cd303f51f58d578e0
pristine_git_object: 5c3ec0f37e5579c49af12c585a2116800f1aa813
docs/sdks/stackimport/README.md:
id: 17bcf49afc4e
last_write_checksum: sha1:385622b354c44d12057be574f73a168355b2c418
Expand Down Expand Up @@ -1274,12 +1278,12 @@ trackedFiles:
pristine_git_object: ee6bb1a089f199ee421f67dd2cfd0e26a3b112c9
jsr.json:
id: 7f6ab7767282
last_write_checksum: sha1:8b7c074db0c6bbd528cbe5518f7ebedced62f597
pristine_git_object: c090a8bbbfc75ff26cbc2a6d555231a18cc6a7ed
last_write_checksum: sha1:292dce42f1a18f237e4b43b414e67c63045dba59
pristine_git_object: 8b3a6ba116c1296946a778084c73f3c524803528
package.json:
id: 7030d0b2f71b
last_write_checksum: sha1:2dc531e70fbdc74c7e69038806352e983b39b38c
pristine_git_object: 84f8315ceb43878490a3bd82199c3bb048a3d915
last_write_checksum: sha1:0b09b332cc1123ba76ec09a1fbc4244e112412eb
pristine_git_object: 9bb68046d5c616a7016f71763349f1770eb0cb35
src/core.ts:
id: f431fdbcd144
last_write_checksum: sha1:a3b94f76908a8f9a4857fea8aac869403adb797c
Expand Down Expand Up @@ -1380,6 +1384,10 @@ trackedFiles:
id: 09ab75e6f0ed
last_write_checksum: sha1:f069a6ef830621abbdced955dec1796fe49958ab
pristine_git_object: 730b3aa2f4612f328c61e84f09fa9cade8efaa72
src/funcs/releasesListReleases.ts:
id: 46494694577e
last_write_checksum: sha1:655b9dabc3baf7646b5867efae0f20a689f08ad0
pristine_git_object: 0d27e930f943ae892207619ea00b3628e60e5f5a
src/funcs/stackImportStackImport.ts:
id: 9e2bfe3fcb36
last_write_checksum: sha1:1ecd414a096ccc87d25aec534a1a838198c6a273
Expand Down Expand Up @@ -1430,8 +1438,8 @@ trackedFiles:
pristine_git_object: 962ea486e17eabe13bcf068493a556110c944df8
src/lib/config.ts:
id: 320761608fb3
last_write_checksum: sha1:36ffe875bcdadbb8ba8f145e41c6de5b50883f02
pristine_git_object: aa339ddb690dddb4e0c8bc8f221c94870cda2a0e
last_write_checksum: sha1:8319a4f31357e0f18aeae9df24bd8b7a5612d178
pristine_git_object: f88c103705f46b339c690402ed32d50e0d4ca31e
src/lib/dlv.ts:
id: b1988214835a
last_write_checksum: sha1:1dd3e3fbb4550c4bf31f5ef997faff355d6f3250
Expand Down Expand Up @@ -1786,8 +1794,8 @@ trackedFiles:
pristine_git_object: 89518bfb8678ec100b59d9fba96fa46b7c1bc524
src/models/index.ts:
id: f93644b0f37e
last_write_checksum: sha1:8dc9c4d7ca1d828c32f6ab9b925b5ba4be28a4e4
pristine_git_object: 9f5c012c55c47ebd6ef6cf20be64a747923f7dc3
last_write_checksum: sha1:a0699a3c4fa9908f5faed345385e1b0b09d33f97
pristine_git_object: d7de8370e4be24a17e7f8ed0243c5687383a2a14
src/models/initializerequest.ts:
id: 8bf429933e77
last_write_checksum: sha1:84c5a1aadbb3dee003933a4ae1a78bb76572f959
Expand Down Expand Up @@ -1916,6 +1924,10 @@ trackedFiles:
id: 7325911dd45c
last_write_checksum: sha1:dfced12b0a5a8f11a8e43b3da9d7e497b2baff25
pristine_git_object: 35a5d7a8038006592a8ff51b68f5a1d214b7b13b
src/models/listreleasesresponse.ts:
id: b52de963f92a
last_write_checksum: sha1:da3f8108245281b850ddf64588d94c50786c48f4
pristine_git_object: 7ed8289a0890523b011939220f4e6a74667e7770
src/models/localoperation.ts:
id: 7137d3f98d2d
last_write_checksum: sha1:7184595e2ea3d61cffab1b3e788ffb871cc5376e
Expand Down Expand Up @@ -2282,8 +2294,8 @@ trackedFiles:
pristine_git_object: a846b0faab60d3bebd2b1fd7c558f3ba02b49120
src/sdk/releases.ts:
id: 1edfaa181e13
last_write_checksum: sha1:ad3da893778746e01948464e70d861b3c16b3a1e
pristine_git_object: 3ba925cf48aa99c1431ed1ada2d70f76c6a69003
last_write_checksum: sha1:3027ebe3e823ba2805df1d122a04267e5d67ca9b
pristine_git_object: dc056a6e02c2dcf62c76df0c0f65e6f7b3325706
src/sdk/sdk.ts:
id: 784571af2f69
last_write_checksum: sha1:efeed141574837442fbe3319c1137d03454c75ed
Expand Down Expand Up @@ -2593,4 +2605,9 @@ examples:
application/json: {"deploymentId": "<id>", "stackSettings": {}, "stackState": {"platform": "aws", "resourcePrefix": "<value>", "resources": {}}}
"200":
application/json: {"deploymentId": "<id>", "stackSettings": {}, "stackState": {"platform": "gcp", "resourcePrefix": "<value>", "resources": {}}}
list_releases:
speakeasy-default-list-releases:
responses:
"200":
application/json: {"items": []}
examplesVersion: 1.0.2
2 changes: 1 addition & 1 deletion client-sdks/manager/typescript/.speakeasy/gen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ generation:
generateNewTests: true
skipResponseBodyAssertions: false
typescript:
version: 1.2.46
version: 1.2.47
acceptHeaderEnum: true
additionalDependencies:
dependencies: {}
Expand Down
4 changes: 3 additions & 1 deletion client-sdks/manager/typescript/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ passthrough; single-tenant impls ignore it. See the trait doc on

### [Releases](docs/sdks/releases/README.md)

* [listReleases](docs/sdks/releases/README.md#listreleases)
* [createRelease](docs/sdks/releases/README.md#createrelease)
* [getLatestRelease](docs/sdks/releases/README.md#getlatestrelease)
* [getRelease](docs/sdks/releases/README.md#getrelease)
Expand Down Expand Up @@ -266,6 +267,7 @@ passthrough; single-tenant impls ignore it. See the trait doc on
- [`releasesCreateRelease`](docs/sdks/releases/README.md#createrelease)
- [`releasesGetLatestRelease`](docs/sdks/releases/README.md#getlatestrelease)
- [`releasesGetRelease`](docs/sdks/releases/README.md#getrelease)
- [`releasesListReleases`](docs/sdks/releases/README.md#listreleases)
- [`stackImportStackImport`](docs/sdks/stackimport/README.md#stackimport) - `POST /v1/stack/import` — Inbound: deployment-group bearer.
- [`syncAcquire`](docs/sdks/sync/README.md#acquire) - `POST /v1/sync/acquire` — Inbound: workspace / dg / deployment bearer.
`caller: &Subject` is threaded into `DeploymentStore::acquire` so
Expand Down Expand Up @@ -426,7 +428,7 @@ run();


**Inherit from [`AlienManagerError`](./src/models/errors/alienmanagererror.ts)**:
* [`ErrorResponse`](./src/models/errors/errorresponse.ts): Error response wrapper for API endpoints. Applicable to 8 of 31 methods.*
* [`ErrorResponse`](./src/models/errors/errorresponse.ts): Error response wrapper for API endpoints. Applicable to 8 of 32 methods.*
* [`ResponseValidationError`](./src/models/errors/responsevalidationerror.ts): Type mismatch between the data returned from the server and the structure expected by the SDK. See `error.rawValue` for the raw value and `error.pretty()` for a nicely formatted multi-line string.

</details>
Expand Down
17 changes: 17 additions & 0 deletions client-sdks/manager/typescript/docs/models/listreleasesresponse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# ListReleasesResponse

## Example Usage

```typescript
import { ListReleasesResponse } from "@alienplatform/manager-api/models";

let value: ListReleasesResponse = {
items: [],
};
```

## Fields

| Field | Type | Required | Description |
| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- |
| `items` | [models.ReleaseResponse](../models/releaseresponse.md)[] | :heavy_check_mark: | N/A |
69 changes: 69 additions & 0 deletions client-sdks/manager/typescript/docs/sdks/releases/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,79 @@ Release management

### Available Operations

* [listReleases](#listreleases)
* [createRelease](#createrelease)
* [getLatestRelease](#getlatestrelease)
* [getRelease](#getrelease)

## listReleases

### Example Usage

<!-- UsageSnippet language="typescript" operationID="list_releases" method="get" path="/v1/releases" -->
```typescript
import { AlienManager } from "@alienplatform/manager-api";

const alienManager = new AlienManager({
serverURL: "https://api.example.com",
bearer: process.env["ALIEN_MANAGER_BEARER"] ?? "",
});

async function run() {
const result = await alienManager.releases.listReleases();

console.log(result);
}

run();
```

### Standalone function

The standalone function version of this method:

```typescript
import { AlienManagerCore } from "@alienplatform/manager-api/core.js";
import { releasesListReleases } from "@alienplatform/manager-api/funcs/releasesListReleases.js";

// Use `AlienManagerCore` for best tree-shaking performance.
// You can create one instance of it to use across an application.
const alienManager = new AlienManagerCore({
serverURL: "https://api.example.com",
bearer: process.env["ALIEN_MANAGER_BEARER"] ?? "",
});

async function run() {
const res = await releasesListReleases(alienManager);
if (res.ok) {
const { value: result } = res;
console.log(result);
} else {
console.log("releasesListReleases failed:", res.error);
}
}

run();
```

### Parameters

| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. |
| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. |
| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. |

### Response

**Promise\<[models.ListReleasesResponse](../../models/listreleasesresponse.md)\>**

### Errors

| Error Type | Status Code | Content Type |
| ------------------------------- | ------------------------------- | ------------------------------- |
| errors.AlienManagerDefaultError | 4XX, 5XX | \*/\* |

## createRelease

### Example Usage
Expand Down
2 changes: 1 addition & 1 deletion client-sdks/manager/typescript/jsr.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

{
"name": "@alienplatform/manager-api",
"version": "1.2.46",
"version": "1.2.47",
"exports": {
".": "./src/index.ts",
"./models/errors": "./src/models/errors/index.ts",
Expand Down
2 changes: 1 addition & 1 deletion client-sdks/manager/typescript/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@alienplatform/manager-api",
"version": "1.4.2",
"version": "1.2.47",
"author": "Alien Software, Inc. <hi@alien.dev>",
"homepage": "https://alien.dev",
"license": "FSL-1.1-Apache-2.0",
Expand Down
Loading
Loading