@ductape/mcp 0.2.35 → 0.2.37

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.
Files changed (2) hide show
  1. package/dist/index.js +30 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -527,6 +527,9 @@ ALL params are passed as a JSON array in positional order matching the SDK signa
527
527
  ductape_cli("apps actions list --app <app_tag> --json")
528
528
  ductape_cli("apps actions get --app <app_tag> --action <action_tag> --json")
529
529
  ductape_cli("apps actions delete --app <app_tag> --action <action_tag>")
530
+ Reuse the same canonical full action asset for create and update. An unchanged top-level tag is
531
+ accepted and stripped locally before the immutable action is patched; never create a second
532
+ partial-update file. A tag that differs from --action is rejected before any mutation.
530
533
  NOTE: the flag is --action-file, NOT -f/--file — that flag belongs to the parent "apps" command
531
534
  (used by "apps create"/"apps update"), and Commander resolves a flag shared by an ancestor and a
532
535
  descendant against the ancestor, so -f here would silently never reach this subcommand. Verified
@@ -1445,6 +1448,7 @@ const ADMIN_SUBCOMMANDS = [
1445
1448
  'workspaces',
1446
1449
  'link', 'unlink', 'init',
1447
1450
  'products', 'apps', 'marketplace',
1451
+ 'features',
1448
1452
  'resources',
1449
1453
  'notifications',
1450
1454
  'events',
@@ -3105,6 +3109,9 @@ CONNECTION FILE — REQUIRED SHAPE:
3105
3109
  "product_env_slug": "prd",
3106
3110
  "app_env_slug": "production",
3107
3111
  "variables": [{ "key": "region", "value": "ng" }],
3112
+ "credentials": {
3113
+ "headers:Authorization": "$Secret{PAYSTACK_SECRET_KEY}"
3114
+ },
3108
3115
  "auth": {
3109
3116
  "auth_tag": "secret-key",
3110
3117
  "data": {
@@ -3115,6 +3122,27 @@ CONNECTION FILE — REQUIRED SHAPE:
3115
3122
  }]
3116
3123
  }
3117
3124
 
3125
+ Authentication is OPTIONAL. If the App defines an auth scheme, use auth with its exact auth_tag.
3126
+ If it has no formal auth scheme but actions declare reusable credential fields, use credentials
3127
+ with location-prefixed keys: headers:<key>, query:<key>, params:<key>, or body:<key>. Leave both
3128
+ auth and credentials absent when the environment does not require authentication. Never create a
3129
+ fake auth_tag merely to store a header.
3130
+
3131
+ OAUTH/TOKEN ACCESS: OAuth grants and shared tokens belong to the product App connection, not to
3132
+ Feature input and not to repeated api.oauth() calls in application code. Inspect the App auth
3133
+ scheme; when it uses oauth2, token_access, credential_access, or fetch_credential_access, direct
3134
+ the user through the provider-consent/login flow in Workbench and preserve the resulting encrypted
3135
+ connection auth for every mapped product environment. Agents must never request, print, or write
3136
+ access/refresh tokens into the repository. Application code initializes Ductape with product+env,
3137
+ awaits ready(), and calls the action; runtime auth injection and token refresh are platform-managed.
3138
+ api.oauth() remains only an explicit process-local override for a connection the user deliberately
3139
+ has not persisted.
3140
+
3141
+ SHARED CONFIG: derive candidate keys from the selected App version's action schemas across headers,
3142
+ query, params, and body. Deduplicate by <location>:<key>, prefer fields reused by several actions,
3143
+ and present the exact candidates to the user. Never ask the user to invent or type a key name that
3144
+ is already declared by an action. Only the value/$Secret reference is user-supplied.
3145
+
3118
3146
  Before writing this file, inspect the exact App version/auth/action schemas. auth.data must have
3119
3147
  headers/query/params/body objects and must match the selected auth schema. Never guess an auth_tag,
3120
3148
  variable key, input location, or required field. Store credentials with secrets.create first and
@@ -3123,8 +3151,8 @@ CONNECTION FILE — REQUIRED SHAPE:
3123
3151
  CREATE/REPAIR/ROTATE:
3124
3152
  ductape_cli("products apps configure --product <product_tag> --app <app_or_access_tag> \
3125
3153
  --connection-file ductape/apps/<app_tag>/connection.json --json")
3126
- The command is merge-safe: an omitted auth or variables field preserves the existing saved field.
3127
- Providing auth or variables explicitly replaces that field for the named product environment.
3154
+ The command is merge-safe: an omitted auth, credentials, or variables field preserves the existing
3155
+ saved field. Providing one explicitly replaces that field for the named product environment.
3128
3156
  It never returns saved credential values. Include only environments intentionally being changed;
3129
3157
  other existing mappings are retained. To repair an old connection with no mapping, add its row.
3130
3158
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ductape/mcp",
3
- "version": "0.2.35",
3
+ "version": "0.2.37",
4
4
  "description": "MCP server that exposes Ductape SDK operations via the backend proxy",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",