@vfarcic/dot-ai 0.116.0 → 0.118.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.
- package/README.md +91 -137
- package/dist/core/ai-provider-factory.d.ts +4 -2
- package/dist/core/ai-provider-factory.d.ts.map +1 -1
- package/dist/core/ai-provider-factory.js +17 -6
- package/dist/core/capability-operations.js +1 -1
- package/dist/core/generic-session-manager.d.ts +67 -0
- package/dist/core/generic-session-manager.d.ts.map +1 -0
- package/dist/core/generic-session-manager.js +192 -0
- package/dist/core/pattern-operations.js +1 -1
- package/dist/core/providers/noop-provider.d.ts +47 -0
- package/dist/core/providers/noop-provider.d.ts.map +1 -0
- package/dist/core/providers/noop-provider.js +63 -0
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +13 -13
- package/dist/core/session-utils.d.ts +3 -6
- package/dist/core/session-utils.d.ts.map +1 -1
- package/dist/core/session-utils.js +5 -13
- package/dist/core/shared-prompt-loader.d.ts +15 -3
- package/dist/core/shared-prompt-loader.d.ts.map +1 -1
- package/dist/core/shared-prompt-loader.js +67 -14
- package/dist/core/unified-creation-session.d.ts +3 -10
- package/dist/core/unified-creation-session.d.ts.map +1 -1
- package/dist/core/unified-creation-session.js +34 -75
- package/dist/core/unified-creation-types.d.ts +31 -22
- package/dist/core/unified-creation-types.d.ts.map +1 -1
- package/dist/interfaces/mcp.d.ts.map +1 -1
- package/dist/interfaces/mcp.js +9 -34
- package/dist/tools/answer-question.d.ts.map +1 -1
- package/dist/tools/answer-question.js +12 -12
- package/dist/tools/choose-solution.js +1 -1
- package/dist/tools/generate-manifests.d.ts.map +1 -1
- package/dist/tools/generate-manifests.js +9 -10
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -6
- package/dist/tools/organizational-data.js +12 -12
- package/dist/tools/project-setup/discovery.d.ts +15 -0
- package/dist/tools/project-setup/discovery.d.ts.map +1 -0
- package/dist/tools/project-setup/discovery.js +104 -0
- package/dist/tools/project-setup/generate-scope.d.ts +15 -0
- package/dist/tools/project-setup/generate-scope.d.ts.map +1 -0
- package/dist/tools/project-setup/generate-scope.js +237 -0
- package/dist/tools/project-setup/report-scan.d.ts +15 -0
- package/dist/tools/project-setup/report-scan.d.ts.map +1 -0
- package/dist/tools/project-setup/report-scan.js +156 -0
- package/dist/tools/project-setup/types.d.ts +111 -0
- package/dist/tools/project-setup/types.d.ts.map +1 -0
- package/dist/tools/project-setup/types.js +8 -0
- package/dist/tools/project-setup.d.ts +28 -0
- package/dist/tools/project-setup.d.ts.map +1 -0
- package/dist/tools/project-setup.js +134 -0
- package/dist/tools/recommend.js +1 -1
- package/dist/tools/remediate.js +1 -1
- package/dist/tools/version.d.ts +0 -7
- package/dist/tools/version.d.ts.map +1 -1
- package/dist/tools/version.js +5 -34
- package/package.json +4 -2
- package/prompts/capability-inference.md +2 -2
- package/prompts/infrastructure-trigger-expansion.md +2 -2
- package/prompts/intent-analysis.md +2 -2
- package/prompts/kyverno-generation.md +14 -14
- package/prompts/manifest-generation.md +5 -5
- package/prompts/map-intent-to-operation.md +2 -2
- package/prompts/pattern-complete-error.md +1 -1
- package/prompts/pattern-complete-success.md +4 -4
- package/prompts/pattern-rationale.md +1 -1
- package/prompts/pattern-resources.md +1 -1
- package/prompts/pattern-review.md +5 -5
- package/prompts/policy-complete-apply.md +4 -4
- package/prompts/policy-complete-discard.md +1 -1
- package/prompts/policy-complete-error.md +1 -1
- package/prompts/policy-complete-save.md +4 -4
- package/prompts/policy-complete-success.md +4 -4
- package/prompts/policy-namespace-scope.md +1 -1
- package/prompts/question-generation.md +5 -5
- package/prompts/resource-analysis.md +3 -3
- package/prompts/resource-selection.md +3 -3
- package/prompts/solution-enhancement.md +4 -4
- package/scripts/anthropic.nu +9 -13
- package/scripts/common.nu +31 -33
- package/scripts/ingress.nu +5 -4
- package/scripts/kubernetes.nu +38 -53
- package/shared-prompts/prd-create.md +15 -1
- package/shared-prompts/prd-done.md +1 -0
- package/shared-prompts/prd-next.md +0 -2
- package/shared-prompts/prd-start.md +2 -2
- package/dist/core/doc-discovery.d.ts +0 -38
- package/dist/core/doc-discovery.d.ts.map +0 -1
- package/dist/core/doc-discovery.js +0 -231
- package/dist/core/doc-testing-session.d.ts +0 -109
- package/dist/core/doc-testing-session.d.ts.map +0 -1
- package/dist/core/doc-testing-session.js +0 -696
- package/dist/core/doc-testing-types.d.ts +0 -127
- package/dist/core/doc-testing-types.d.ts.map +0 -1
- package/dist/core/doc-testing-types.js +0 -53
- package/dist/core/nushell-runtime.d.ts +0 -39
- package/dist/core/nushell-runtime.d.ts.map +0 -1
- package/dist/core/nushell-runtime.js +0 -103
- package/dist/core/platform-operations.d.ts +0 -70
- package/dist/core/platform-operations.d.ts.map +0 -1
- package/dist/core/platform-operations.js +0 -294
- package/dist/tools/build-platform.d.ts +0 -25
- package/dist/tools/build-platform.d.ts.map +0 -1
- package/dist/tools/build-platform.js +0 -277
- package/dist/tools/test-docs.d.ts +0 -22
- package/dist/tools/test-docs.d.ts.map +0 -1
- package/dist/tools/test-docs.js +0 -351
- package/prompts/doc-testing-done.md +0 -51
- package/prompts/doc-testing-fix.md +0 -120
- package/prompts/doc-testing-scan.md +0 -140
- package/prompts/doc-testing-test-section.md +0 -169
- package/prompts/platform-operations-parse-script-help.md +0 -68
- package/scripts/ack.nu +0 -195
- package/scripts/argo-workflows.nu +0 -47
- package/scripts/argocd.nu +0 -85
- package/scripts/aso.nu +0 -74
- package/scripts/backstage.nu +0 -349
- package/scripts/cert-manager.nu +0 -13
- package/scripts/cnpg.nu +0 -14
- package/scripts/dot.nu +0 -32
- package/scripts/external-secrets.nu +0 -110
- package/scripts/gatekeeper.nu +0 -19
- package/scripts/github.nu +0 -42
- package/scripts/image.nu +0 -67
- package/scripts/kro.nu +0 -11
- package/scripts/kubevela.nu +0 -22
- package/scripts/port.nu +0 -71
- package/scripts/prometheus.nu +0 -21
- package/scripts/registry.nu +0 -55
- package/scripts/storage.nu +0 -210
- package/scripts/tests.nu +0 -12
- package/scripts/velero.nu +0 -45
- package/shared-prompts/validate-docs.md +0 -22
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
🚀 **Policy Applied Successfully!**
|
|
2
2
|
|
|
3
|
-
**Description**: {description}
|
|
4
|
-
**Triggers**: {triggers}
|
|
5
|
-
**Rationale**: {rationale}
|
|
3
|
+
**Description**: {{description}}
|
|
4
|
+
**Triggers**: {{triggers}}
|
|
5
|
+
**Rationale**: {{rationale}}
|
|
6
6
|
|
|
7
7
|
**Applied Kyverno Policy:**
|
|
8
8
|
```yaml
|
|
9
|
-
{kyvernoPolicy}
|
|
9
|
+
{{kyvernoPolicy}}
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
The policy intent has been saved and the Kyverno policy has been applied to your cluster. The policy is now active and will enforce the defined rules on new and updated resources.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Error creating policy intent: {error}
|
|
1
|
+
Error creating policy intent: {{error}}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
💾 **Policy Saved Successfully!**
|
|
2
2
|
|
|
3
|
-
**Description**: {description}
|
|
4
|
-
**Triggers**: {triggers}
|
|
5
|
-
**Rationale**: {rationale}
|
|
3
|
+
**Description**: {{description}}
|
|
4
|
+
**Triggers**: {{triggers}}
|
|
5
|
+
**Rationale**: {{rationale}}
|
|
6
6
|
|
|
7
7
|
**Generated Kyverno Policy:**
|
|
8
8
|
```yaml
|
|
9
|
-
{kyvernoPolicy}
|
|
9
|
+
{{kyvernoPolicy}}
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
The policy intent has been saved and the Kyverno YAML should be saved to your local file system. The policy is ready for manual deployment when needed.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
✅ **Policy Intent Created Successfully!**
|
|
2
2
|
|
|
3
|
-
**Description**: {description}
|
|
4
|
-
**Triggers**: {triggers}
|
|
5
|
-
**Rationale**: {rationale}
|
|
3
|
+
**Description**: {{description}}
|
|
4
|
+
**Triggers**: {{triggers}}
|
|
5
|
+
**Rationale**: {{rationale}}
|
|
6
6
|
|
|
7
|
-
**Action**: {deploymentAction}
|
|
7
|
+
**Action**: {{deploymentAction}}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
# Question Generation for Kubernetes Resource Configuration
|
|
2
2
|
|
|
3
3
|
## User Intent
|
|
4
|
-
{intent}
|
|
4
|
+
{{intent}}
|
|
5
5
|
|
|
6
6
|
## Recommended Solution
|
|
7
|
-
{solution_description}
|
|
7
|
+
{{solution_description}}
|
|
8
8
|
|
|
9
9
|
## Resources in Solution
|
|
10
|
-
{resource_details}
|
|
10
|
+
{{resource_details}}
|
|
11
11
|
|
|
12
12
|
## Available Cluster Options
|
|
13
|
-
{cluster_options}
|
|
13
|
+
{{cluster_options}}
|
|
14
14
|
|
|
15
15
|
## Organizational Policies
|
|
16
|
-
{policy_context}
|
|
16
|
+
{{policy_context}}
|
|
17
17
|
|
|
18
18
|
## Instructions
|
|
19
19
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Resource Analysis for Enhancement
|
|
2
2
|
|
|
3
3
|
## Current Solution
|
|
4
|
-
{current_solution}
|
|
4
|
+
{{current_solution}}
|
|
5
5
|
|
|
6
6
|
## User Request
|
|
7
|
-
{user_request}
|
|
7
|
+
{{user_request}}
|
|
8
8
|
|
|
9
9
|
## Available Resource Types
|
|
10
|
-
{available_resource_types}
|
|
10
|
+
{{available_resource_types}}
|
|
11
11
|
|
|
12
12
|
## Instructions
|
|
13
13
|
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
You are a Kubernetes expert. Given this user intent, available resources, and organizational patterns, create and rank complete solutions that address the user's needs.
|
|
4
4
|
|
|
5
5
|
## User Intent
|
|
6
|
-
{intent}
|
|
6
|
+
{{intent}}
|
|
7
7
|
|
|
8
8
|
## Available Resources
|
|
9
|
-
{resources}
|
|
9
|
+
{{{resources}}}
|
|
10
10
|
|
|
11
11
|
## Organizational Patterns
|
|
12
|
-
{patterns}
|
|
12
|
+
{{patterns}}
|
|
13
13
|
|
|
14
14
|
## Instructions
|
|
15
15
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# Single-Pass Solution Enhancement
|
|
2
2
|
|
|
3
3
|
## Current Solution
|
|
4
|
-
{current_solution}
|
|
4
|
+
{{current_solution}}
|
|
5
5
|
|
|
6
6
|
## Detailed Resource Schemas
|
|
7
|
-
{detailed_schemas}
|
|
7
|
+
{{detailed_schemas}}
|
|
8
8
|
|
|
9
9
|
## Analysis Result
|
|
10
|
-
{analysis_result}
|
|
10
|
+
{{analysis_result}}
|
|
11
11
|
|
|
12
12
|
## User Response
|
|
13
|
-
{open_response}
|
|
13
|
+
{{open_response}}
|
|
14
14
|
|
|
15
15
|
## Instructions
|
|
16
16
|
|
package/scripts/anthropic.nu
CHANGED
|
@@ -2,23 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
# Retrieves Anthropic token
|
|
4
4
|
#
|
|
5
|
-
# Parameters:
|
|
6
|
-
# --anthropic-api-key: Anthropic API key (optional, falls back to ANTHROPIC_API_KEY env var)
|
|
7
|
-
#
|
|
8
5
|
# Returns:
|
|
9
6
|
# A record with token, and saves values to .env file
|
|
10
|
-
def --env "main get anthropic" [
|
|
11
|
-
--anthropic-api-key: string
|
|
12
|
-
] {
|
|
7
|
+
def --env "main get anthropic" [] {
|
|
13
8
|
|
|
14
|
-
mut
|
|
15
|
-
if
|
|
16
|
-
$
|
|
17
|
-
} else
|
|
18
|
-
|
|
9
|
+
mut anthropic_api_key = ""
|
|
10
|
+
if "ANTHROPIC_API_KEY" in $env {
|
|
11
|
+
$anthropic_api_key = $env.ANTHROPIC_API_KEY
|
|
12
|
+
} else {
|
|
13
|
+
let value = input $"(ansi green_bold)Enter Anthropic token:(ansi reset) "
|
|
14
|
+
$anthropic_api_key = $value
|
|
19
15
|
}
|
|
20
|
-
$"export ANTHROPIC_API_KEY=($
|
|
16
|
+
$"export ANTHROPIC_API_KEY=($anthropic_api_key)\n" | save --append .env
|
|
21
17
|
|
|
22
|
-
{token: $
|
|
18
|
+
{token: $anthropic_api_key}
|
|
23
19
|
|
|
24
20
|
}
|
package/scripts/common.nu
CHANGED
|
@@ -47,10 +47,6 @@ def "main delete temp_files" [] {
|
|
|
47
47
|
# > main get creds azure
|
|
48
48
|
def --env "main get creds" [
|
|
49
49
|
provider: string, # The cloud provider to configure credentials for (aws, azure, google)
|
|
50
|
-
--aws-access-key-id: string, # AWS Access Key ID (optional, falls back to AWS_ACCESS_KEY_ID env var)
|
|
51
|
-
--aws-secret-access-key: string, # AWS Secret Access Key (optional, falls back to AWS_SECRET_ACCESS_KEY env var)
|
|
52
|
-
--aws-account-id: string, # AWS Account ID (optional, falls back to AWS_ACCOUNT_ID env var)
|
|
53
|
-
--azure-tenant: string # Azure Tenant ID (optional, falls back to AZURE_TENANT env var)
|
|
54
50
|
] {
|
|
55
51
|
|
|
56
52
|
mut creds = {provider: $provider}
|
|
@@ -62,47 +58,49 @@ def --env "main get creds" [
|
|
|
62
58
|
|
|
63
59
|
} else if $provider == "aws" {
|
|
64
60
|
|
|
65
|
-
mut
|
|
66
|
-
if
|
|
67
|
-
$
|
|
68
|
-
} else
|
|
69
|
-
|
|
61
|
+
mut aws_access_key_id = ""
|
|
62
|
+
if AWS_ACCESS_KEY_ID in $env {
|
|
63
|
+
$aws_access_key_id = $env.AWS_ACCESS_KEY_ID
|
|
64
|
+
} else {
|
|
65
|
+
$aws_access_key_id = input $"(ansi green_bold)Enter AWS Access Key ID: (ansi reset)"
|
|
70
66
|
}
|
|
71
|
-
$"export AWS_ACCESS_KEY_ID=($
|
|
67
|
+
$"export AWS_ACCESS_KEY_ID=($aws_access_key_id)\n"
|
|
72
68
|
| save --append .env
|
|
73
|
-
$creds = ( $creds | upsert aws_access_key_id $
|
|
74
|
-
|
|
75
|
-
mut
|
|
76
|
-
if
|
|
77
|
-
$
|
|
78
|
-
} else
|
|
79
|
-
|
|
69
|
+
$creds = ( $creds | upsert aws_access_key_id $aws_access_key_id )
|
|
70
|
+
|
|
71
|
+
mut aws_secret_access_key = ""
|
|
72
|
+
if AWS_SECRET_ACCESS_KEY in $env {
|
|
73
|
+
$aws_secret_access_key = $env.AWS_SECRET_ACCESS_KEY
|
|
74
|
+
} else {
|
|
75
|
+
$aws_secret_access_key = input $"(ansi green_bold)Enter AWS Secret Access Key: (ansi reset)" --suppress-output
|
|
76
|
+
print ""
|
|
80
77
|
}
|
|
81
|
-
$"export AWS_SECRET_ACCESS_KEY=($
|
|
78
|
+
$"export AWS_SECRET_ACCESS_KEY=($aws_secret_access_key)\n"
|
|
82
79
|
| save --append .env
|
|
83
|
-
$creds = ( $creds | upsert aws_secret_access_key $
|
|
80
|
+
$creds = ( $creds | upsert aws_secret_access_key $aws_secret_access_key )
|
|
84
81
|
|
|
85
|
-
mut
|
|
86
|
-
if
|
|
87
|
-
$
|
|
88
|
-
} else
|
|
89
|
-
|
|
82
|
+
mut aws_account_id = ""
|
|
83
|
+
if AWS_ACCOUNT_ID in $env {
|
|
84
|
+
$aws_account_id = $env.AWS_ACCOUNT_ID
|
|
85
|
+
} else {
|
|
86
|
+
$aws_account_id = input $"(ansi green_bold)Enter AWS Account ID: (ansi reset)"
|
|
90
87
|
}
|
|
91
|
-
$"export AWS_ACCOUNT_ID=($
|
|
88
|
+
$"export AWS_ACCOUNT_ID=($aws_account_id)\n"
|
|
92
89
|
| save --append .env
|
|
93
|
-
$creds = ( $creds | upsert aws_account_id $
|
|
90
|
+
$creds = ( $creds | upsert aws_account_id $aws_account_id )
|
|
94
91
|
|
|
95
92
|
} else if $provider == "azure" {
|
|
96
93
|
|
|
97
|
-
mut
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
94
|
+
mut tenant_id = ""
|
|
95
|
+
|
|
96
|
+
if AZURE_TENANT in $env {
|
|
97
|
+
$tenant_id = $env.AZURE_TENANT
|
|
98
|
+
} else {
|
|
99
|
+
$tenant_id = input $"(ansi green_bold)Enter Azure Tenant ID: (ansi reset)"
|
|
102
100
|
}
|
|
103
|
-
$creds = ( $creds | upsert tenant_id $
|
|
101
|
+
$creds = ( $creds | upsert tenant_id $tenant_id )
|
|
104
102
|
|
|
105
|
-
az login --tenant $
|
|
103
|
+
az login --tenant $tenant_id
|
|
106
104
|
|
|
107
105
|
} else {
|
|
108
106
|
|
package/scripts/ingress.nu
CHANGED
|
@@ -39,12 +39,13 @@ def --env "main apply ingress" [
|
|
|
39
39
|
|
|
40
40
|
(
|
|
41
41
|
kubectl --namespace ingress-nginx wait
|
|
42
|
-
--for=condition=
|
|
43
|
-
|
|
42
|
+
--for=condition=Ready
|
|
43
|
+
pods
|
|
44
|
+
--selector app.kubernetes.io/name=ingress-nginx
|
|
45
|
+
--selector app.kubernetes.io/component=controller
|
|
46
|
+
--timeout=120s
|
|
44
47
|
)
|
|
45
48
|
|
|
46
|
-
sleep 5sec
|
|
47
|
-
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
} else {
|
package/scripts/kubernetes.nu
CHANGED
|
@@ -13,11 +13,6 @@ def --env "main create kubernetes" [
|
|
|
13
13
|
--node-size = "small" # Supported values: small, medium, large
|
|
14
14
|
--auth = true # Whether to perform authentication with the cloud provider
|
|
15
15
|
--enable-ingress = true # Whether to enable ingress for the kind provider
|
|
16
|
-
--aws-access-key-id: string, # AWS Access Key ID (optional, falls back to AWS_ACCESS_KEY_ID env var)
|
|
17
|
-
--aws-secret-access-key: string, # AWS Secret Access Key (optional, falls back to AWS_SECRET_ACCESS_KEY env var)
|
|
18
|
-
--azure-tenant: string, # Azure Tenant ID (optional, falls back to AZURE_TENANT env var)
|
|
19
|
-
--upcloud-username: string, # UpCloud username (optional, falls back to UPCLOUD_USERNAME env var)
|
|
20
|
-
--upcloud-password: string # UpCloud password (optional, falls back to UPCLOUD_PASSWORD env var)
|
|
21
16
|
] {
|
|
22
17
|
|
|
23
18
|
$env.KUBECONFIG = $"($env.PWD)/kubeconfig-($name).yaml"
|
|
@@ -37,8 +32,6 @@ def --env "main create kubernetes" [
|
|
|
37
32
|
(
|
|
38
33
|
create eks --name $name --node_size $node_size
|
|
39
34
|
--min_nodes $min_nodes --max_nodes $max_nodes
|
|
40
|
-
--aws-access-key-id $aws_access_key_id
|
|
41
|
-
--aws-secret-access-key $aws_secret_access_key
|
|
42
35
|
)
|
|
43
36
|
|
|
44
37
|
} else if $provider == "azure" {
|
|
@@ -46,7 +39,6 @@ def --env "main create kubernetes" [
|
|
|
46
39
|
(
|
|
47
40
|
create aks --name $name --node_size $node_size
|
|
48
41
|
--min_nodes $min_nodes --max_nodes $max_nodes
|
|
49
|
-
--azure-tenant $azure_tenant
|
|
50
42
|
)
|
|
51
43
|
|
|
52
44
|
} else if $provider == "upcloud" {
|
|
@@ -54,8 +46,6 @@ def --env "main create kubernetes" [
|
|
|
54
46
|
(
|
|
55
47
|
create upcloud --name $name --node_size $node_size
|
|
56
48
|
--min_nodes $min_nodes --max_nodes $max_nodes
|
|
57
|
-
--upcloud-username $upcloud_username
|
|
58
|
-
--upcloud-password $upcloud_password
|
|
59
49
|
)
|
|
60
50
|
|
|
61
51
|
} else if $provider == "kind" {
|
|
@@ -317,8 +307,6 @@ def --env "create upcloud" [
|
|
|
317
307
|
--node_size = "small" # Supported values: small, medium, large
|
|
318
308
|
--min_nodes = 2 # Minimum number of nodes in the cluster
|
|
319
309
|
--max_nodes = 4 # Maximum number of nodes in the cluster
|
|
320
|
-
--upcloud-username: string, # UpCloud username (optional, falls back to UPCLOUD_USERNAME env var)
|
|
321
|
-
--upcloud-password: string # UpCloud password (optional, falls back to UPCLOUD_PASSWORD env var)
|
|
322
310
|
] {
|
|
323
311
|
|
|
324
312
|
print $"
|
|
@@ -329,24 +317,24 @@ Press the (ansi yellow_bold)enter key(ansi reset) to continue.
|
|
|
329
317
|
"
|
|
330
318
|
input
|
|
331
319
|
|
|
332
|
-
mut
|
|
333
|
-
if
|
|
334
|
-
$
|
|
335
|
-
} else
|
|
336
|
-
|
|
320
|
+
mut upcloud_username = ""
|
|
321
|
+
if UPCLOUD_USERNAME in $env {
|
|
322
|
+
$upcloud_username = $env.UPCLOUD_USERNAME
|
|
323
|
+
} else {
|
|
324
|
+
$upcloud_username = input $"(ansi green_bold)Enter UpCloud username: (ansi reset)"
|
|
325
|
+
$env.UPCLOUD_USERNAME = $upcloud_username
|
|
337
326
|
}
|
|
338
|
-
$
|
|
339
|
-
$"export UPCLOUD_USERNAME=($username)\n"
|
|
327
|
+
$"export UPCLOUD_USERNAME=($upcloud_username)\n"
|
|
340
328
|
| save --append .env
|
|
341
|
-
|
|
342
|
-
mut
|
|
343
|
-
if
|
|
344
|
-
$
|
|
345
|
-
} else
|
|
346
|
-
|
|
329
|
+
|
|
330
|
+
mut upcloud_password = ""
|
|
331
|
+
if UPCLOUD_PASSWORD in $env {
|
|
332
|
+
$upcloud_password = $env.UPCLOUD_PASSWORD
|
|
333
|
+
} else {
|
|
334
|
+
$upcloud_password = input $"(ansi green_bold)Enter UpCloud password: (ansi reset)" --suppress-output
|
|
335
|
+
$env.UPCLOUD_PASSWORD = $upcloud_password
|
|
347
336
|
}
|
|
348
|
-
$
|
|
349
|
-
$"export UPCLOUD_PASSWORD=($password)\n"
|
|
337
|
+
$"export UPCLOUD_PASSWORD=($upcloud_password)\n"
|
|
350
338
|
| save --append .env
|
|
351
339
|
print ""
|
|
352
340
|
|
|
@@ -394,22 +382,21 @@ def --env "create aks" [
|
|
|
394
382
|
--name = "dot", # Name of the Kubernetes cluster
|
|
395
383
|
--min_nodes = 2, # Minimum number of nodes in the cluster
|
|
396
384
|
--max_nodes = 4, # Maximum number of nodes in the cluster
|
|
397
|
-
--node_size = "small"
|
|
398
|
-
--auth = true
|
|
399
|
-
--azure-tenant: string # Azure Tenant ID (optional, falls back to AZURE_TENANT env var)
|
|
385
|
+
--node_size = "small" # Supported values: small, medium, large
|
|
386
|
+
--auth = true # Whether to perform authentication with Azure
|
|
400
387
|
] {
|
|
401
388
|
|
|
389
|
+
mut tenant_id = ""
|
|
402
390
|
let location = "eastus"
|
|
403
391
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
error make { msg: "Azure Tenant ID required via --azure-tenant parameter or AZURE_TENANT environment variable" }
|
|
392
|
+
if AZURE_TENANT in $env {
|
|
393
|
+
$tenant_id = $env.AZURE_TENANT
|
|
394
|
+
} else {
|
|
395
|
+
$tenant_id = input $"(ansi green_bold)Enter Azure Tenant ID: (ansi reset)"
|
|
409
396
|
}
|
|
410
397
|
|
|
411
398
|
if $auth {
|
|
412
|
-
az login --tenant $
|
|
399
|
+
az login --tenant $tenant_id
|
|
413
400
|
}
|
|
414
401
|
|
|
415
402
|
mut resource_group = ""
|
|
@@ -509,29 +496,27 @@ def --env "create eks" [
|
|
|
509
496
|
--name = "dot", # Name of the Kubernetes cluster
|
|
510
497
|
--min_nodes = 2, # Minimum number of nodes in the cluster
|
|
511
498
|
--max_nodes = 4, # Maximum number of nodes in the cluster
|
|
512
|
-
--node_size = "small"
|
|
513
|
-
--aws-access-key-id: string, # AWS Access Key ID (optional, falls back to AWS_ACCESS_KEY_ID env var)
|
|
514
|
-
--aws-secret-access-key: string # AWS Secret Access Key (optional, falls back to AWS_SECRET_ACCESS_KEY env var)
|
|
499
|
+
--node_size = "small" # Supported values: small, medium, large
|
|
515
500
|
] {
|
|
516
501
|
|
|
517
502
|
let region = "us-east-1"
|
|
518
503
|
|
|
519
|
-
mut
|
|
520
|
-
if
|
|
521
|
-
$
|
|
522
|
-
} else
|
|
523
|
-
|
|
504
|
+
mut aws_access_key_id = ""
|
|
505
|
+
if AWS_ACCESS_KEY_ID in $env {
|
|
506
|
+
$aws_access_key_id = $env.AWS_ACCESS_KEY_ID
|
|
507
|
+
} else {
|
|
508
|
+
$aws_access_key_id = input $"(ansi green_bold)Enter AWS Access Key ID: (ansi reset)"
|
|
524
509
|
}
|
|
525
|
-
$"export AWS_ACCESS_KEY_ID=($
|
|
510
|
+
$"export AWS_ACCESS_KEY_ID=($aws_access_key_id)\n"
|
|
526
511
|
| save --append .env
|
|
527
512
|
|
|
528
|
-
mut
|
|
529
|
-
if
|
|
530
|
-
$
|
|
531
|
-
} else
|
|
532
|
-
|
|
513
|
+
mut aws_secret_access_key = ""
|
|
514
|
+
if AWS_SECRET_ACCESS_KEY in $env {
|
|
515
|
+
$aws_secret_access_key = $env.AWS_SECRET_ACCESS_KEY
|
|
516
|
+
} else {
|
|
517
|
+
$aws_secret_access_key = input $"(ansi green_bold)Enter AWS Secret Access Key: (ansi reset)" --suppress-output
|
|
533
518
|
}
|
|
534
|
-
$"export AWS_SECRET_ACCESS_KEY=($
|
|
519
|
+
$"export AWS_SECRET_ACCESS_KEY=($aws_secret_access_key)\n"
|
|
535
520
|
| save --append .env
|
|
536
521
|
|
|
537
522
|
let aws_account_id = (
|
|
@@ -542,8 +527,8 @@ def --env "create eks" [
|
|
|
542
527
|
| save --append .env
|
|
543
528
|
|
|
544
529
|
$"[default]
|
|
545
|
-
aws_access_key_id = ($
|
|
546
|
-
aws_secret_access_key = ($
|
|
530
|
+
aws_access_key_id = ($aws_access_key_id)
|
|
531
|
+
aws_secret_access_key = ($aws_secret_access_key)
|
|
547
532
|
" | save aws-creds.conf --force
|
|
548
533
|
|
|
549
534
|
mut vm_size = "t3.medium"
|
|
@@ -118,6 +118,17 @@ Work through the PRD template focusing on project management, milestone tracking
|
|
|
118
118
|
|
|
119
119
|
**CRITICAL**: Steps 2-4 must happen in this exact order to avoid the chicken-and-egg problem of needing the issue ID for the filename.
|
|
120
120
|
|
|
121
|
+
### Step 5: Update ROADMAP.md (If It Exists)
|
|
122
|
+
|
|
123
|
+
After creating the PRD, check if `docs/ROADMAP.md` exists. If it does, add the new feature to the appropriate timeframe section based on PRD priority:
|
|
124
|
+
- **High Priority** → Short-term section
|
|
125
|
+
- **Medium Priority** → Medium-term section
|
|
126
|
+
- **Low Priority** → Long-term section
|
|
127
|
+
|
|
128
|
+
Format: `- [Brief feature description] (PRD #[issue-id])`
|
|
129
|
+
|
|
130
|
+
The ROADMAP.md update will be included in the commit at the end of the workflow (Option 2).
|
|
131
|
+
|
|
121
132
|
## Next Steps After PRD Creation
|
|
122
133
|
|
|
123
134
|
After completing the PRD, present the user with numbered options:
|
|
@@ -150,8 +161,10 @@ This will help identify the first task and set up the development workflow.
|
|
|
150
161
|
If user chooses option 2:
|
|
151
162
|
|
|
152
163
|
```bash
|
|
153
|
-
# Stage the PRD file
|
|
164
|
+
# Stage the PRD file (and ROADMAP.md if it was updated)
|
|
154
165
|
git add prds/[issue-id]-[feature-name].md
|
|
166
|
+
# If docs/ROADMAP.md exists and was updated, include it:
|
|
167
|
+
# git add docs/ROADMAP.md
|
|
155
168
|
|
|
156
169
|
# Commit with skip CI flag to avoid unnecessary CI runs
|
|
157
170
|
git commit -m "docs(prd-[issue-id]): create PRD #[issue-id] - [feature-name] [skip ci]
|
|
@@ -159,6 +172,7 @@ git commit -m "docs(prd-[issue-id]): create PRD #[issue-id] - [feature-name] [sk
|
|
|
159
172
|
- Created PRD for [brief feature description]
|
|
160
173
|
- Defined [X] major milestones
|
|
161
174
|
- Documented problem, solution, and success criteria
|
|
175
|
+
- Added to ROADMAP.md ([timeframe] section)
|
|
162
176
|
- Ready for implementation"
|
|
163
177
|
|
|
164
178
|
# Push to main
|
|
@@ -33,6 +33,7 @@ Complete the PRD implementation workflow including branch management, pull reque
|
|
|
33
33
|
- [ ] **No outstanding blockers**: All dependencies resolved and technical debt addressed
|
|
34
34
|
- [ ] **Update PRD status**: Mark PRD as "Complete" with completion date
|
|
35
35
|
- [ ] **Archive PRD file**: Move completed PRD to `./prds/done/` directory to maintain project organization
|
|
36
|
+
- [ ] **Update ROADMAP.md (if it exists)**: Remove the completed feature from `docs/ROADMAP.md` roadmap if the file exists
|
|
36
37
|
|
|
37
38
|
**Note**: Tests will run automatically in the CI/CD pipeline when the PR is created. Do not run tests locally during the completion workflow.
|
|
38
39
|
|
|
@@ -10,6 +10,8 @@ category: project-management
|
|
|
10
10
|
|
|
11
11
|
You are helping initiate active implementation work on a specific Product Requirements Document (PRD). This command bridges the gap between PRD planning and actual development work by setting up the implementation context and providing clear next steps.
|
|
12
12
|
|
|
13
|
+
**IMPORTANT**: Do NOT include time estimates or effort estimates in your responses. Focus on task prioritization, dependencies, and clear next steps without speculating on duration.
|
|
14
|
+
|
|
13
15
|
## Process Overview
|
|
14
16
|
|
|
15
17
|
1. **Select Target PRD** - Ask user which PRD they want to implement
|
|
@@ -190,8 +192,6 @@ Present the implementation plan:
|
|
|
190
192
|
|
|
191
193
|
**Success criteria**: [How you'll know this task is complete]
|
|
192
194
|
|
|
193
|
-
**Estimated effort**: [Time estimate]
|
|
194
|
-
|
|
195
195
|
**Next steps after this**: [What becomes possible once this is done]
|
|
196
196
|
|
|
197
197
|
## Implementation Approach
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Documentation File Discovery
|
|
3
|
-
*
|
|
4
|
-
* Discovers documentation files in a project with configurable patterns
|
|
5
|
-
* and intelligent priority ordering.
|
|
6
|
-
*/
|
|
7
|
-
export interface DiscoveredFile {
|
|
8
|
-
path: string;
|
|
9
|
-
name: string;
|
|
10
|
-
priority: number;
|
|
11
|
-
category: 'readme' | 'common' | 'docs' | 'other';
|
|
12
|
-
relativePath: string;
|
|
13
|
-
}
|
|
14
|
-
export declare class DocDiscovery {
|
|
15
|
-
private readonly ignoredDirs;
|
|
16
|
-
/**
|
|
17
|
-
* Get file pattern from CLI args or environment variable
|
|
18
|
-
*/
|
|
19
|
-
getFilePattern(args: any): string;
|
|
20
|
-
/**
|
|
21
|
-
* Discover documentation files in the project
|
|
22
|
-
*/
|
|
23
|
-
discoverFiles(baseDir?: string, pattern?: string): Promise<DiscoveredFile[]>;
|
|
24
|
-
/**
|
|
25
|
-
* Calculate priority for file ordering
|
|
26
|
-
* Lower numbers = higher priority
|
|
27
|
-
*/
|
|
28
|
-
private calculatePriority;
|
|
29
|
-
/**
|
|
30
|
-
* Categorize file by type
|
|
31
|
-
*/
|
|
32
|
-
private categorizeFile;
|
|
33
|
-
/**
|
|
34
|
-
* Format discovered files for display
|
|
35
|
-
*/
|
|
36
|
-
formatForDisplay(files: DiscoveredFile[]): string;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=doc-discovery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doc-discovery.d.ts","sourceRoot":"","sources":["../../src/core/doc-discovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAa1B;IAEF;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAajC;;OAEG;IACG,aAAa,CAAC,OAAO,GAAE,MAAsB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAoCjG;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA2CzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiCtB;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM;CA0DlD"}
|