This is an automated email from the ASF dual-hosted git repository.

sciabarracom pushed a commit to branch 0.1.0
in repository https://gitbox.apache.org/repos/asf/openserverless-task.git


The following commit(s) were added to refs/heads/0.1.0 by this push:
     new 1f4ad06  updated tasks to 0.9.0 main
1f4ad06 is described below

commit 1f4ad06063739b5ad4f83c217e968d57cea1312b
Author: Trustable User <[email protected]>
AuthorDate: Wed Jul 8 14:22:38 2026 +0200

    updated tasks to 0.9.0 main
---
 .licenserc.yaml => .asf.yaml                       |  34 ++--
 .licenserc.yaml => .gitattributes                  |  24 +--
 .licenserc.yaml                                    |   6 +
 admin/kubernetes/compact-job.yaml                  |  17 ++
 admin/usage/usage-job.tpl.yaml                     |  17 ++
 admin/usage/usage.js                               |  19 +++
 admin/usage/usagechecker/index.ts                  |  19 +++
 admin/usage/usagechecker/job-operator.ts           |  19 +++
 admin/usage/usagechecker/log-formatter.ts          |  19 +++
 admin/usage/usagechecker/models.ts                 |  19 +++
 .../usage/usagechecker/tests/log-formatter.test.ts |  19 +++
 admin/usage/usagechecker/volume-manager.ts         |  19 +++
 debug/test/opsfile.yml                             |  17 ++
 debug/verbose.ts                                   |  19 +++
 env/opsfile.yml                                    |  17 ++
 env/secrets.js                                     |  19 +++
 ide/deploy/deploy.js                               |   9 +-
 ide/deploy/env_utils.js                            |  19 +++
 ide/deploy/index.js                                |   6 +-
 ide/deploy/serve.js                                |   4 +-
 ide/opsfile.yml                                    |  25 +--
 opsroot.json                                       |   3 +-
 prereq.yml                                         |  18 ++
 runtimes.json                                      | 188 +++------------------
 setup/devcontainer/deployment.yaml                 |  17 ++
 setup/devcontainer/opsfile.yml                     |  17 ++
 setup/docker/space.ts                              |  19 +++
 setup/kubernetes/opsfile.yml                       |   2 +-
 setup/nuvolaris/opsfile.yml                        |  25 ++-
 setup/nuvolaris/seaweedfs.js                       |  44 +++++
 setup/nuvolaris/web/index.html                     |  19 +++
 tests/opsfile.yml                                  |  17 ++
 util/config/configurator.js                        |  19 +++
 util/config/configurator/configurator.ts           |  19 +++
 util/config/configurator/index.ts                  |  19 +++
 util/config/configurator/tests/index.test.ts       |  19 +++
 util/docopts.md                                    |   2 +
 util/freeze/findimages.js                          |  23 ++-
 util/freeze/opsfile.yml                            |  17 ++
 util/opsfile.yml                                   |  30 +++-
 util/stdtext.js                                    |  19 +++
 util/upload.js                                     |  19 +++
 42 files changed, 683 insertions(+), 238 deletions(-)

diff --git a/.licenserc.yaml b/.asf.yaml
similarity index 65%
copy from .licenserc.yaml
copy to .asf.yaml
index 501dbe6..fe71b3d 100644
--- a/.licenserc.yaml
+++ b/.asf.yaml
@@ -14,24 +14,18 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-#
-header:
-  license:
-    spdx-id: Apache-2.0
-    copyright-owner: Apache Software Foundation
 
-  paths-ignore:
-    - '**/*.sample'
-    - 'env.src'
-    - '.git-hooks/pre-commit'
-    - '**/_*'
-    - 'nuvroot.json'
-    - 'LICENSE'
-    - 'cert-manager.yaml'
-    - 'ingress-deploy.yaml'
-    - 'runtimes.json'
-    - '**/*.json'
-    - '**/*.service'
-    - 'update/update.ps1' 
-    - '**/mime.types'
-    - '**/*.txt'
+github:
+  rulesets:
+    - name: "Default Branch Protection"
+      type: branch
+      branches:
+        includes:
+          - "~DEFAULT_BRANCH"
+          - "release/*"
+          - "rel/*"
+        excludes: []
+      bypass_teams:
+        - root
+      restrict_deletion: true
+      restrict_force_push: true
diff --git a/.licenserc.yaml b/.gitattributes
similarity index 66%
copy from .licenserc.yaml
copy to .gitattributes
index 501dbe6..c3d714e 100644
--- a/.licenserc.yaml
+++ b/.gitattributes
@@ -15,23 +15,9 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-header:
-  license:
-    spdx-id: Apache-2.0
-    copyright-owner: Apache Software Foundation
 
-  paths-ignore:
-    - '**/*.sample'
-    - 'env.src'
-    - '.git-hooks/pre-commit'
-    - '**/_*'
-    - 'nuvroot.json'
-    - 'LICENSE'
-    - 'cert-manager.yaml'
-    - 'ingress-deploy.yaml'
-    - 'runtimes.json'
-    - '**/*.json'
-    - '**/*.service'
-    - 'update/update.ps1' 
-    - '**/mime.types'
-    - '**/*.txt'
+* text=auto eol=lf
+*.sh text eol=lf
+*.ps1 text eol=crlf
+*.png binary
+*.jpg binary
diff --git a/.licenserc.yaml b/.licenserc.yaml
index 501dbe6..394398f 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -35,3 +35,9 @@ header:
     - 'update/update.ps1' 
     - '**/mime.types'
     - '**/*.txt'
+    - '**/*.md'
+    - DISCLAIMER
+    - LICENSE
+    - NOTICE
+    - '.gitignore'
+    - '**/.env.*'
diff --git a/admin/kubernetes/compact-job.yaml 
b/admin/kubernetes/compact-job.yaml
index 9f1ef1f..f100260 100644
--- a/admin/kubernetes/compact-job.yaml
+++ b/admin/kubernetes/compact-job.yaml
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 apiVersion: batch/v1
 kind: Job
 metadata:
diff --git a/admin/usage/usage-job.tpl.yaml b/admin/usage/usage-job.tpl.yaml
index 14b68c6..1ef6a0e 100644
--- a/admin/usage/usage-job.tpl.yaml
+++ b/admin/usage/usage-job.tpl.yaml
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 apiVersion: batch/v1
 kind: Job
 metadata:
diff --git a/admin/usage/usage.js b/admin/usage/usage.js
index 0186b4b..00a77a2 100644
--- a/admin/usage/usage.js
+++ b/admin/usage/usage.js
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 // @bun
 var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} 
}).exports, mod), mod.exports);
 var __require = import.meta.require;
diff --git a/admin/usage/usagechecker/index.ts 
b/admin/usage/usagechecker/index.ts
index 8f5c05f..4c60d22 100644
--- a/admin/usage/usagechecker/index.ts
+++ b/admin/usage/usagechecker/index.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import {logFormatter} from "./log-formatter";
 import {volumeManager} from "./volume-manager";
 import {jobOperator} from "./job-operator";
diff --git a/admin/usage/usagechecker/job-operator.ts 
b/admin/usage/usagechecker/job-operator.ts
index c9102c4..c453cf5 100644
--- a/admin/usage/usagechecker/job-operator.ts
+++ b/admin/usage/usagechecker/job-operator.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import {$} from "bun";
 import {VolumeManager} from "./volume-manager";
 import {LogFormatter} from "./log-formatter";
diff --git a/admin/usage/usagechecker/log-formatter.ts 
b/admin/usage/usagechecker/log-formatter.ts
index e1821fb..5222f8f 100644
--- a/admin/usage/usagechecker/log-formatter.ts
+++ b/admin/usage/usagechecker/log-formatter.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import {DfRow} from "./models";
 
 export interface LogFormatter {
diff --git a/admin/usage/usagechecker/models.ts 
b/admin/usage/usagechecker/models.ts
index 2877382..4f20227 100644
--- a/admin/usage/usagechecker/models.ts
+++ b/admin/usage/usagechecker/models.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 export interface KubernetesVolume {
     name: string;
     persistentVolumeClaim?: {
diff --git a/admin/usage/usagechecker/tests/log-formatter.test.ts 
b/admin/usage/usagechecker/tests/log-formatter.test.ts
index 66e1cfa..762eba0 100644
--- a/admin/usage/usagechecker/tests/log-formatter.test.ts
+++ b/admin/usage/usagechecker/tests/log-formatter.test.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import { expect, test, describe, mock } from "bun:test";
 import { logFormatter, LogFormatter } from "../log-formatter";
 import { DfRow } from "../models";
diff --git a/admin/usage/usagechecker/volume-manager.ts 
b/admin/usage/usagechecker/volume-manager.ts
index 7b5513e..f562e00 100644
--- a/admin/usage/usagechecker/volume-manager.ts
+++ b/admin/usage/usagechecker/volume-manager.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import {file} from "bun";
 import * as yaml from 'yaml';
 import {KubernetesVolume, VolumeMount} from "./models";
diff --git a/debug/test/opsfile.yml b/debug/test/opsfile.yml
index 0baf667..6dad65f 100644
--- a/debug/test/opsfile.yml
+++ b/debug/test/opsfile.yml
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 version: "3"
 
 vars:
diff --git a/debug/verbose.ts b/debug/verbose.ts
index de90234..0ba6572 100644
--- a/debug/verbose.ts
+++ b/debug/verbose.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import { $ } from "bun";
 
 const OPS_FILE = "opsfile.yml";
diff --git a/env/opsfile.yml b/env/opsfile.yml
index dfcb7c7..505c735 100644
--- a/env/opsfile.yml
+++ b/env/opsfile.yml
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 version: 3
 
 vars:
diff --git a/env/secrets.js b/env/secrets.js
index 08055b8..83d2741 100644
--- a/env/secrets.js
+++ b/env/secrets.js
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 // @bun
 var{argv:G}=globalThis.Bun;var{$:W}=globalThis.Bun;class Q{static 
parseArguments(z,J){let B={};if(J==="add"){let D=null,F="";for(let N of 
z)if(N.includes("=")){if(D!==null)B[D]=F.trim();let[E,X=""]=N.split("=",2);D=E.toUpperCase().trim(),F=X}else
 F+=` ${N}`;if(D!==null)B[D]=F.trim()}else if(J==="remove")for(let D of 
z)B[D.toUpperCase().trim()]="";return B}static printTable(z,J){try{let 
B=Object.keys(J),D=Math.max(...B.map((X)=>X.length)),F=Math.max(...B.map((X)=>J[X].length)),N=D+F+7,E="
 [...]
 ${z}
diff --git a/ide/deploy/deploy.js b/ide/deploy/deploy.js
index 628814a..4b93217 100644
--- a/ide/deploy/deploy.js
+++ b/ide/deploy/deploy.js
@@ -114,7 +114,7 @@ export async function deployAction(artifact) {
     typ = spData[1];
     pkg = sp[1];
   } catch(error) {
-    
+
     console.log("❌ cannot deploy", artifact, "Error:", error.message);
     return;
   }
@@ -131,7 +131,12 @@ export async function deployAction(artifact) {
 
   const args = (await extractArgs(toInspect)).join(" ");
   const actionName = `${pkg}/${name}`;
-  await exec(`ops action update ${actionName} ${artifact} ${args}`);
+
+  try {
+    await exec(`ops action update ${actionName} ${artifact} ${args}`);
+  } catch(error) {
+    console.log("❌ cannot deploy", artifact, "Error:", error.message);
+  }
 
   activeDeployments.delete(artifact);
 
diff --git a/ide/deploy/env_utils.js b/ide/deploy/env_utils.js
index 4670b14..182e4af 100644
--- a/ide/deploy/env_utils.js
+++ b/ide/deploy/env_utils.js
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 export function expandEnv(str, env = process.env) {
   // Stato per sapere se siamo dentro apici singoli
   let inSingleQuotes = false;
diff --git a/ide/deploy/index.js b/ide/deploy/index.js
index d4c7dde..79c7b5a 100644
--- a/ide/deploy/index.js
+++ b/ide/deploy/index.js
@@ -45,10 +45,10 @@ async function signalHandler() {
 
 function checkPort() {
     const server = createServer();
-    server.listen(8080, '127.0.0.1');
+    server.listen(5173, '127.0.0.1');
     server.on('error', () => {
-        console.log('deployment mode already active (or something listening in 
127.0.0.1:8080)');
-        server.close();        
+        console.log('deployment mode already active (or something listening in 
127.0.0.1:5173)');
+        server.close();
     });
     server.on('listening', () => server.close());
 }
diff --git a/ide/deploy/serve.js b/ide/deploy/serve.js
index 7d22e8e..a684b3c 100644
--- a/ide/deploy/serve.js
+++ b/ide/deploy/serve.js
@@ -28,7 +28,7 @@ import { file } from "bun";
  * @param startPort
  * @returns {Promise<number>}
  */
-async function findAvailablePort(host, startPort = 8080) {
+async function findAvailablePort(host, startPort = 5173) {
     host = host || '127.0.0.1';
     for (let port = startPort; port < 65535; port++) {
         try {
@@ -123,7 +123,7 @@ async function main() {
     // Get command-line arguments
     const args = Bun.argv.slice(2);
     const flags = {
-        port: 8080,
+        port: 5173,
         host: "127.0.0.1",
         dir: "./",
         proxyHost: null,
diff --git a/ide/opsfile.yml b/ide/opsfile.yml
index b820459..798e2c5 100644
--- a/ide/opsfile.yml
+++ b/ide/opsfile.yml
@@ -119,13 +119,15 @@ tasks:
 
   setup:
     silent: true
-    desc: setup OpenServerless ide
+    desc: setup app
     cmds:
       - |
-        clear
-        while ! test -e ~/.wskprops
-        do $OPS ide login
+        echo ">>>"
+        ops action list setup | awk 'NR>1{print $1}' | while read action
+        do echo "=== $action"
+           ops invoke "$action" || echo "error in $action"
         done
+        echo "<<<"
 
 
   login:
@@ -268,6 +270,8 @@ tasks:
               echo "URL: $OPSDEV_HOST"
             fi
         fi
+      - task: setup
+
 
   undeploy:
     desc: undeploy actions and packages from the current project
@@ -366,16 +370,3 @@ tasks:
     desc: nodejs subcommand
 
 
-  init:
-    desc: setup the package invoking all the setup actions
-    silent: true
-    cmds:
-    - |
-      if ops action list init 2>/dev/null >_init
-      then
-          cat _init | awk 'NR>1{print $1}' | while read action
-          do  echo $action >&2
-              ops action invoke -r "$action" | jq -M -c .
-          done
-      else echo "nothing to do" >&2
-      fi
diff --git a/opsroot.json b/opsroot.json
index 701ea04..585b06c 100644
--- a/opsroot.json
+++ b/opsroot.json
@@ -5,7 +5,6 @@
       "coreutils": "arch b2sum b3sum base32 basename basenc cat chgrp chmod 
chown chroot cksum comm cp csplit cut date dd df dir dircolors dirname du env 
expand expr factor fmt fold groups hashsum head hostid hostname id install join 
kill link ln logname ls md5sum mkdir mkfifo mknod mktemp more mv nice nl nohup 
nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd readlink 
realpath rm rmdir seq sha1sum sha224sum sha256sum sha3-224sum sha3-256sum 
sha3-384sum sha3-512sum sha384sum [...]
     },
     "images": {
-      "standalone": 
"ghcr.io/nuvolaris/openwhisk-controller:3.1.0-mastrogpt.2402101445",
       "operator": 
"docker.io/apache/openserverless-operator:0.1.0-incubating.2604091352",
       "controller": 
"ghcr.io/nuvolaris/openwhisk-controller:3.1.0-mastrogpt.2402101445",
       "invoker": 
"ghcr.io/nuvolaris/openwhisk-invoker:3.1.0-mastrogpt.2402101445",
@@ -17,7 +16,7 @@
       "etcd": "docker.io/bitnamilegacy/etcd:3.5.17-debian-12-r0",
       "redis": "docker.io/bitnamilegacy/redis:8.2.1",
       "seaweedfs": "docker.io/chrislusf/seaweedfs:3.97",
-      "busybox":"docker.io/library/busybox:1.36.0",
+      "busybox": "docker.io/library/busybox:1.36.0",
       "registry": "docker.io/library/registry:3.0.0",
       "milvus": "docker.io/milvusdb/milvus:v2.5.2",
       "nginx": "docker.io/nginxinc/nginx-unprivileged:1.24",
diff --git a/prereq.yml b/prereq.yml
index 7fe931b..bd866ca 100644
--- a/prereq.yml
+++ b/prereq.yml
@@ -1,3 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
 version: 3
 
 vars:
diff --git a/runtimes.json b/runtimes.json
index 7c052e7..0e86431 100644
--- a/runtimes.json
+++ b/runtimes.json
@@ -20,13 +20,13 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-nodejs",
-                    "tag": "v21-2506091954"
+                    "tag": "v21-0045691"
                 },
                 "deprecated": false,
                 "attached": {
                     "attachmentName": "codefile",
                     "attachmentType": "text/plain"
-                },                
+                },
                 "stemCells": [
                     {
                         "initialCount": 1,
@@ -40,14 +40,14 @@
                         }
                     }
                 ]
-            },            
+            },
             {
                 "kind": "nodejs:20",
                 "default": false,
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-nodejs",
-                    "tag": "v20-2506091954"
+                    "tag": "v20-0045691"
                 },
                 "deprecated": false,
                 "attached": {
@@ -61,14 +61,14 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-nodejs",
-                    "tag": "v18-2506091954"
+                    "tag": "v18-0045691"
                 },
                 "deprecated": false,
                 "attached": {
                     "attachmentName": "codefile",
                     "attachmentType": "text/plain"
                 }
-            }           
+            }
         ],
         "python": [
             {
@@ -77,7 +77,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-python",
-                    "tag": "v3.12-2506091954"
+                    "tag": "v3.12-0045691"
                 },
                 "deprecated": false,
                 "attached": {
@@ -104,7 +104,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-python",
-                    "tag": "v3.11-2506091954"
+                    "tag": "v3.11-0045691"
                 },
                 "deprecated": false,
                 "attached": {
@@ -118,7 +118,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-python",
-                    "tag": "v3.12-2506091954"
+                    "tag": "v3.12-0045691"
                 },
                 "deprecated": false,
                 "attached": {
@@ -132,35 +132,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-python",
-                    "tag": "v3.13-2506091954"
-                },
-                "deprecated": false,
-                "attached": {
-                    "attachmentName": "codefile",
-                    "attachmentType": "text/plain"
-                }
-            },
-            {
-                "kind": "python:3.11ca",
-                "default": false,
-                "image": {
-                    "prefix": "apache",
-                    "name": "openserverless-runtime-python",
-                    "tag": ""
-                },
-                "deprecated": false,
-                "attached": {
-                    "attachmentName": "codefile",
-                    "attachmentType": "text/plain"
-                }
-            },
-            {
-                "kind": "python:310",
-                "default": false,
-                "image": {
-                    "prefix": "apache",
-                    "name": "openserverless-runtime-python",
-                    "tag": "v3.10-2506091954"
+                    "tag": "v3.13-0045691"
                 },
                 "deprecated": false,
                 "attached": {
@@ -181,7 +153,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-go",
-                    "tag": "v1.22-2506091954"
+                    "tag": "v1.22-0045691"
                 }
             },
             {
@@ -195,7 +167,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-go",
-                    "tag": "v1.21-2506091954"
+                    "tag": "v1.21-0045691"
                 }
             },
             {
@@ -209,21 +181,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-go",
-                    "tag": "v1.20-2506091954"
-                }
-            },            
-            {
-                "kind": "go:1.20mf",
-                "default": false,
-                "deprecated": false,
-                "attached": {
-                    "attachmentName": "codefile",
-                    "attachmentType": "text/plain"
-                },
-                "image": {
-                    "prefix": "ghcr.io/nuvolaris",
-                    "name": "go-nuvolaris-metaflow",
-                    "tag": "bc86ab6"
+                    "tag": "v1.20-0045691"
                 }
             },
             {
@@ -237,9 +195,9 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-go",
-                    "tag": "v1.22proxy-2506091954"
+                    "tag": "v1.22proxy-0045691"
                 }
-            }            
+            }
         ],
         "java": [
             {
@@ -248,7 +206,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-java",
-                    "tag": "v8-2506091954"
+                    "tag": "v8-0045691"
                 },
                 "deprecated": false,
                 "attached": {
@@ -263,7 +221,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-java",
-                    "tag": "v11-2506091954"
+                    "tag": "v11-0045691"
                 },
                 "deprecated": false,
                 "attached": {
@@ -278,7 +236,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-java",
-                    "tag": "v17-2506091954"
+                    "tag": "v17-0045691"
                 },
                 "deprecated": false,
                 "attached": {
@@ -293,7 +251,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-java",
-                    "tag": "v21-2506091954"
+                    "tag": "v21-0045691"
                 },
                 "deprecated": false,
                 "attached": {
@@ -301,7 +259,7 @@
                     "attachmentType": "text/plain"
                 },
                 "requireMain": true
-            }            
+            }
         ],
         "php": [
             {
@@ -311,35 +269,7 @@
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-php",
-                    "tag": "v8.3-2506091954"
-                },
-                "attached": {
-                    "attachmentName": "codefile",
-                    "attachmentType": "text/plain"
-                }
-            },            
-            {
-                "kind": "php:8.2",
-                "default": false,
-                "deprecated": false,
-                "image": {
-                    "prefix": "apache",
-                    "name": "openserverless-runtime-php",
-                    "tag": "v8.2-2506091954"
-                },
-                "attached": {
-                    "attachmentName": "codefile",
-                    "attachmentType": "text/plain"
-                }
-            },
-            {
-                "kind": "php:8.1",
-                "default": false,
-                "deprecated": false,
-                "image": {
-                    "prefix": "apache",
-                    "name": "openserverless-runtime-php",
-                    "tag": "v8.1-2506091954"
+                    "tag": ""
                 },
                 "attached": {
                     "attachmentName": "codefile",
@@ -347,78 +277,14 @@
                 }
             },
             {
-                "kind": "php:8.0",
+                "kind": "php:8.2",
                 "default": false,
                 "deprecated": false,
                 "image": {
                     "prefix": "apache",
                     "name": "openserverless-runtime-php",
-                    "tag": "v8.0-2506091954"
-                },
-                "attached": {
-                    "attachmentName": "codefile",
-                    "attachmentType": "text/plain"
-                }
-            }
-        ],
-        "ruby": [
-            {
-                "kind": "ruby:2.5",
-                "default": true,
-                "deprecated": false,
-                "attached": {
-                    "attachmentName": "codefile",
-                    "attachmentType": "text/plain"
-                },
-                "image": {
-                    "prefix": "openwhisk",
-                    "name": "action-ruby-v2.5",
-                    "tag": "nightly"
-                }
-            }
-        ],
-        "dotnet": [
-            {
-                "kind": "dotnet:2.2",
-                "default": true,
-                "deprecated": false,
-                "requireMain": true,
-                "image": {
-                    "prefix": "openwhisk",
-                    "name": "action-dotnet-v2.2",
-                    "tag": "nightly"
-                },
-                "attached": {
-                    "attachmentName": "codefile",
-                    "attachmentType": "text/plain"
-                }
-            },
-            {
-                "kind": "dotnet:3.1",
-                "default": false,
-                "deprecated": false,
-                "requireMain": true,
-                "image": {
-                    "prefix": "openwhisk",
-                    "name": "action-dotnet-v3.1",
-                    "tag": "nightly"
-                },
-                "attached": {
-                    "attachmentName": "codefile",
-                    "attachmentType": "text/plain"
-                }
-            }
-        ],
-        "rust": [
-            {
-                "kind": "rust:1.34",
-                "default": true,
-                "image": {
-                    "prefix": "openwhisk",
-                    "name": "action-rust-v1.34",
-                    "tag": "nightly"
+                    "tag": ""
                 },
-                "deprecated": false,
                 "attached": {
                     "attachmentName": "codefile",
                     "attachmentType": "text/plain"
@@ -426,11 +292,5 @@
             }
         ]
     },
-    "blackboxes": [
-        {
-            "prefix": "openwhisk",
-            "name": "dockerskeleton",
-            "tag": "nightly"
-        }
-    ]
+    "blackboxes": [ ]
 }
\ No newline at end of file
diff --git a/setup/devcontainer/deployment.yaml 
b/setup/devcontainer/deployment.yaml
index c231209..d4d482a 100644
--- a/setup/devcontainer/deployment.yaml
+++ b/setup/devcontainer/deployment.yaml
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 apiVersion: apps/v1
 kind: StatefulSet
 metadata:
diff --git a/setup/devcontainer/opsfile.yml b/setup/devcontainer/opsfile.yml
index 0c862ea..7361469 100644
--- a/setup/devcontainer/opsfile.yml
+++ b/setup/devcontainer/opsfile.yml
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 version: "3"
 
 vars:
diff --git a/setup/docker/space.ts b/setup/docker/space.ts
index f9d8b31..e27d967 100644
--- a/setup/docker/space.ts
+++ b/setup/docker/space.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import { cpus, platform, totalmem } from "node:os";
 
 const GB = 1024 ** 3;
diff --git a/setup/kubernetes/opsfile.yml b/setup/kubernetes/opsfile.yml
index 65c7699..ae9516e 100644
--- a/setup/kubernetes/opsfile.yml
+++ b/setup/kubernetes/opsfile.yml
@@ -258,7 +258,7 @@ tasks:
     cmds:
       - |
         if test -z "$SECRET_OPENWHISK_NUVOLARIS"
-        then ops -task -t "$OPS_ROOT/util/opsfile.yml" secrets
+        then ops util secrets
         else echo Reusing current secrets.
         fi
 
diff --git a/setup/nuvolaris/opsfile.yml b/setup/nuvolaris/opsfile.yml
index 10ddfd4..de44edb 100644
--- a/setup/nuvolaris/opsfile.yml
+++ b/setup/nuvolaris/opsfile.yml
@@ -102,13 +102,13 @@ tasks:
         RES=false
         while [[ $N -lt {{.RETRY}} ]]
         do
-          ANNOT_VALUE="$(kubectl -n nuvolaris get cm/config -o 
jsonpath='{.metadata.annotations.system_action_status}')"
-          if [[ -z "$ANNOT_VALUE" ]]
+          ANNOT_VALUE="$(kubectl -n nuvolaris get cm/config -o 
jsonpath='{{.JSONPATH}}')"
+          if [[ -z "$ANNOT_VALUE" || "$ANNOT_VALUE" != "{{.EXPECTED_VALUE}}" ]]
           then
             printf "\rwaiting for completing system initialization: 
[${BAR:0:$((N++))}]"
             sleep 5
           else
-            test "$ANNOT_VALUE" = "{{.EXPECTED_VALUE}}" && RES=true || 
RES=false
+            RES=true
             break
           fi
         done
@@ -201,6 +201,25 @@ tasks:
       -p s3_data "$S3_BUCKET_DATA"
     - "{{.RUN}} wsk {{.ETC}} action invoke hello/minio -r"
 
+  seaweedfs:
+    silent: true
+    desc: seaweedfs s3-compatible test
+    cmds:
+    - "{{.RUN}} wsk {{.ETC}} package update hello"
+    - |
+      S3_ACCESS_KEY=$($OPS -config S3_ACCESS_KEY)
+      S3_SECRET_KEY=$($OPS -config S3_SECRET_KEY)
+      S3_HOST=$($OPS -config S3_HOST)
+      S3_PORT=$($OPS -config S3_PORT)
+      S3_BUCKET_DATA=$($OPS -config S3_BUCKET_DATA)
+      {{.RUN}} wsk {{.ETC}} action update hello/seaweedfs seaweedfs.js \
+      -p s3_access "$S3_ACCESS_KEY" \
+      -p s3_secret "$S3_SECRET_KEY" \
+      -p s3_host "$S3_HOST" \
+      -p s3_port "$S3_PORT" \
+      -p s3_data "$S3_BUCKET_DATA"
+    - "{{.RUN}} wsk {{.ETC}} action invoke hello/seaweedfs -r"
+
   postgres:
     silent: true
     desc: postgres test
diff --git a/setup/nuvolaris/seaweedfs.js b/setup/nuvolaris/seaweedfs.js
new file mode 100644
index 0000000..6dadf28
--- /dev/null
+++ b/setup/nuvolaris/seaweedfs.js
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+const Minio = require('minio');
+
+async function main(args) {
+    console.log(`connecting to ${args.s3_host}:${args.s3_port}`)
+    let minioClient = new Minio.Client({
+        endPoint: args.s3_host,
+        port: parseInt(args.s3_port),
+        useSSL: false,
+        accessKey: args.s3_access,
+        secretKey: args.s3_secret
+    });
+
+    let bucketName = args.s3_data;
+    let bucketExists = await minioClient.bucketExists(bucketName);
+
+    if(!bucketExists) {
+        throw new Error(`bucket ${bucketName} not found`);
+    }
+
+    return {
+        "body": {
+            "bucket": bucketName,
+            "exists": bucketExists
+        }
+    }
+}
diff --git a/setup/nuvolaris/web/index.html b/setup/nuvolaris/web/index.html
index 2aedc5a..25ecc51 100644
--- a/setup/nuvolaris/web/index.html
+++ b/setup/nuvolaris/web/index.html
@@ -1,3 +1,22 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+-->
+
 <!DOCTYPE html>
 <html lang="en">
 
diff --git a/tests/opsfile.yml b/tests/opsfile.yml
index 9363757..8549147 100644
--- a/tests/opsfile.yml
+++ b/tests/opsfile.yml
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 version: 3
 tasks:
 
diff --git a/util/config/configurator.js b/util/config/configurator.js
index 5ba4c1e..e8ca22f 100644
--- a/util/config/configurator.js
+++ b/util/config/configurator.js
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 // @bun
 var __create = Object.create;
 var __getProtoOf = Object.getPrototypeOf;
diff --git a/util/config/configurator/configurator.ts 
b/util/config/configurator/configurator.ts
index 6ae98c3..70a5f13 100644
--- a/util/config/configurator/configurator.ts
+++ b/util/config/configurator/configurator.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import { $ } from "bun";
 
 import {
diff --git a/util/config/configurator/index.ts 
b/util/config/configurator/index.ts
index 556be39..18e0159 100644
--- a/util/config/configurator/index.ts
+++ b/util/config/configurator/index.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import main from "./configurator";
 
 main().catch(console.error);
diff --git a/util/config/configurator/tests/index.test.ts 
b/util/config/configurator/tests/index.test.ts
index eb35110..20f6acd 100644
--- a/util/config/configurator/tests/index.test.ts
+++ b/util/config/configurator/tests/index.test.ts
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import { expect, test, describe } from "bun:test";
 import {
   readPositionalFile,
diff --git a/util/docopts.md b/util/docopts.md
index 86aec9f..1a92830 100644
--- a/util/docopts.md
+++ b/util/docopts.md
@@ -24,6 +24,7 @@ OpenServerless Utilities
 
 ```text
 Usage:
+  util whoami
   util apihost
   util system
   util update-cli
@@ -50,6 +51,7 @@ Usage:
 ## Commands
 
 ```
+-  whoami                  current user/namespace
 -  apihost                 current apihost
 -  system                  system info (<os>-<arch> in Go format)
 -  update-cli              update the cli downloading the binary
diff --git a/util/freeze/findimages.js b/util/freeze/findimages.js
index 4d4ecbd..eb9f23b 100644
--- a/util/freeze/findimages.js
+++ b/util/freeze/findimages.js
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 /*
 write a simple bun script with no deps that will list images to be preloaded
 assume IMAGE_DIR are available in process.env
@@ -20,8 +39,8 @@ const imageDir = process.env.IMAGE_DIR
 
 const images = []
 
-// Component images from opsroot.json, skip controller and invoker
-const skipKeys = new Set(["controller", "invoker"])
+// Component images from opsroot.json, skip standalone and devcontainer
+const skipKeys = new Set(["standalone", "devcontainer"])
 const opsroot = await Bun.file(`${opsRoot}/opsroot.json`).json()
 for (const [key, img] of Object.entries(opsroot.config.images)) {
   if (skipKeys.has(key)) continue
diff --git a/util/freeze/opsfile.yml b/util/freeze/opsfile.yml
index 541dd43..f2be4a1 100644
--- a/util/freeze/opsfile.yml
+++ b/util/freeze/opsfile.yml
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 version: 3
 
 vars:
diff --git a/util/opsfile.yml b/util/opsfile.yml
index 3738ffa..d1d1018 100644
--- a/util/opsfile.yml
+++ b/util/opsfile.yml
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 version: 3
 
 vars:
@@ -22,9 +39,10 @@ vars:
       else
         echo $AUTH
       fi
-  USERNAME:
-    sh: |
-      wsk property get --namespace | awk '{ print $3 }'
+  # unused
+  #USERNAME:
+  #  sh: |
+  #    wsk property get --namespace | awk '{ print $3 }'
 
 tasks:
   config:
@@ -47,6 +65,12 @@ tasks:
     cmds:
       - echo "{{OS}}-{{ARCH}}"
 
+  whoami:
+    desc: current user/namespace
+    silent: true
+    cmds:
+      - ops -wsk property get | awk '/whisk namespace/{print $3}'
+
   apihost:
     desc: current apihost
     silent: true
diff --git a/util/stdtext.js b/util/stdtext.js
index 700a0ab..f321e9d 100644
--- a/util/stdtext.js
+++ b/util/stdtext.js
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 /*
 accept two args: "os" and "file"
 
diff --git a/util/upload.js b/util/upload.js
index 79ca0d7..4cead94 100644
--- a/util/upload.js
+++ b/util/upload.js
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 // @bun
 var __create = Object.create;
 var __getProtoOf = Object.getPrototypeOf;

Reply via email to